我很困惑为什么我得到这个错误:
class smTitan {
private static $_instance = null;
public static function this($att){
if (!self::$_instance) self::$_instance = new self();
if ($att !== NULL) {
self::$_instance->_att = $att;
self::$_instance->_results = new WP_Query( $att );
}
return self::$_instance;
}
}
我们扩展它
class ourmissionHelper extends smTitan {
public function getPostView() {
}
}
称之为:
ourmissionHelper::this(array("post_type"=>"about"))->getPostView();
,我得到这个错误:
致命错误:调用未定义方法smTitan::getPostView()
这对我来说没有任何意义,getPostView是扩展smTitan的ourmissionHelper的一部分,所以它应该能够访问它,但它将this()构造的第一个类视为唯一的实例…除了在课堂上复制,还有什么办法吗?
self
始终指向编写它的类,从不指向任何扩展类。您想要一个对类的后绑定静态引用,这只有在PHP 5.3使用static
关键字之后才有可能实现。所以用new static()
代替new self()