类构造静态未定义方法


Class Construct Static Undefined method

我很困惑为什么我得到这个错误:

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()