2011-06-10 157 views
1

我的代码PHP OOP辛格尔顿

public static function constructMe() { 
    if(!$this->_instance instanceof self) { 
    $this->_instance = new self(); 
    } 
    return $this->_instance; 
} 

要instansiate类,并且在类中的$_instance变量,但我得到的错误:

Fatal error: Using $this when not in object context 

回答

7

您需要使用

self::$_instance 

既然你在一个静态的范围是(你有没有$this

此外,还要确保你声明

private static $_instance; 

另外,我不知道是否new self();作品 你可以尝试new __CLASS__()或只写类的名称..

也不要使用instanceof,只是issetempty(这是更准确)

检查,并使用!$var instanceof something要小心,总是写为!($var instanceof something)因为你不想意外投射到布尔值。

+2

是的,你可以做'新self();'。 – alexn 2011-06-10 21:24:21

+0

是的,但如果它等于“蛋糕”或什么的,那么你知道..使用instanceof似乎更安全。 – Joshwaa 2011-06-10 21:25:10

+1

如果它被设置为“蛋糕”,你有更大的问题;) – Halcyon 2011-06-10 21:25:53