类构造静态未定义方法

时间:2014-05-09 15:14:50

标签: php

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

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()构造中的第一个类视为唯一的实例...任何想法,除了复制课程以使其工作之外?

1 个答案:

答案 0 :(得分:3)

self总是引用它所写的类,而不是任何扩展类。你想要一个late-binding static reference到你的班级,这是因为PHP 5.3使用static关键字。因此,new static()代替new self()