首页 > 代码库 > 20170722_php_单例模式

20170722_php_单例模式

 1 <?php 2  3 class myClass{ 4      5     private static $obj = null; 6  7     private function  __construc(){ 8  9     }10 11     public static function getInterface(){12         if(self::$obj == null){13             self::$obj = new self();14         }15 16         return self::$obj;17     }18 19     public function __toString(){20         return ‘this is __toString‘;21     }22 }23 24 $obj = myClass::getInterface();25 echo $obj;

myClass的构造函数是private类型的,所以无法在外部被实例化,新建一个静态变量obj,新建一个静态类getInterface,如果obj为空则实例化,然后返回obj.

在类的外部,可以直接调用类的静态方法,静态方法返回的是被实例化的myClass类,而myClass只被实例化了一次,在别的地方调用getInterface,不会再重新实例化myClass,至此实现了实例化.

__toString()是php的魔术方法,需要输出对象类型时,可以使用__toString()返回数据.

20170722_php_单例模式