(php) PHP单例模式

请问如下代码中$oa = Single::getinstance;这句就相当于实例化吗?为什么可以直接使用Single::getinstance;就可以访问这个类中的方法?谢谢

class Single{ private $name; private function __construct{ } static public $instance; static public function getinstance{ if!self::$instance self::$instance = new self; return self::$instance; } public function setname$n{ $this->name = $n; } public function getname{ return $this->name; }
} $oa = Single::getinstance; $ob = Single::getinstance; $oa->setnamehello world; $ob->setnamegood morning; echo $oa->getname; echo <br/>; echo $ob->getname;

因为 getInstance方法里通过new self将自身实例化并作为返回值返回。

静态方法getInstance里面其实写得很清楚,当你静态调用getInstance时,他会负责去判断是否存在当前对象,如果不存在,会自动帮你创建。if!self::$instance self::$instance = new self; 最后将对象句柄返回给你

用static修饰后的成员属性不归类的实例化对象所有,而是归类本身所有。

发表评论

电子邮件地址不会被公开。 必填项已用*标注