[英]Access property of 'singleton' class PHP
我不確定我使用的技術是否合適。 我有一個類,單例,有一個像這樣的子實例:
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=singleton::getInstance();
,整個單例類是否被復制到$ s中,或者這更像是指針?
你正在做的很好,雖然在你的示例代碼中我假設你打算寫:
$s = Singleton::getInstance(); // with the S capitalized
當您調用getInstance方法時,該類正在查看是否已經實例化了自身的版本。 如果有,它將返回對該實例的引用,而不是創建一個全新的實例。 如果尚未創建實例,它將創建實例,然后返回對它的引用。
我不確定為什么sixeightzero聲明你不應該在你的實例的構造函數中實例化一個類。 這樣做時不應該遇到任何問題。
如果你執行$ a = singleton,$ a將是對singleton類的引用。 $ a中的任何更改都將反映在singleton :: etc的訪問中。(指針)
你為什么要在構造函數中做一個子實例? 這可能會導致問題,並應創建一個方法來處理受保護方法內構造函數外部的子實例。 你的子實例是什么樣的?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.