【发布时间】:2012-06-07 19:09:05
【问题描述】:
我不确定我使用的技术是否合适。 我有一个单例类,其子实例如下:
final class Singleton {
public $subinstance;
private static $instance = NULL;
private function __construct() {
$this->subinstance = new subinstance();
}
public static function getInstance() {
if (NULL === self::$instance) {
self::$instance = new self;
}
return self::$instance;
}
private function __clone() {}
}
现在,如果我想从另一个类中的类外部访问子实例,我会这样做:
$s = singleton::getInstance();
$s->subinstance->....
这是正确的方法吗?
当我执行$s=singleton::getInstance(); 时会发生什么情况,整个单例类会被复制到 $s 中还是更像是一个指针?
【问题讨论】:
-
我目前正在研究单例行为并了解到单例类不会执行“__construct()”函数,除非从中创建对象(在本例中为 getInstance())。此外,除非将属性声明为静态(或从中创建的对象),否则无法在单例中访问这些属性。我把这条评论留在这里,这样其他人就不会像我一样花太多时间来实现这一点。 php.net/manual/en/language.oop5.static.php
标签: php singleton instance multiple-instances