我很困惑为什么会收到这个错误:
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是mymissionHelper的一部分,它扩展了smTitan,因此它应该能够访问它,但它将this()构造中的第一个类视为唯一的实例...任何想法,除了复制课程以使其工作之外?
答案 0 :(得分:3)
self
总是引用它所写的类,而不是任何扩展类。你想要一个late-binding static reference到你的班级,这是因为PHP 5.3使用static
关键字。因此,new static()
代替new self()
。