2

我有一个抽象类,它有许多静态函数(通过使用它返回一个新的自身实例new static($args)),但我不知道如何获取类名。我试图避免把

protected static $cn = __CLASS__;

但如果不可避免,那也不是世界末日

abstract class ExtendableObject {
    static function getObject() {
        return new static($data);
    }

    static function getSearcher() {
        return new ExtendableObjectFinder(/* CLASS NAME CLASS */);
    }
}

class ExtendableObjectFinder {
    private $cn;

    function __construct($className) {
       $this->cn = $className;
    }

    function where($where) { ... }

    function fetch() { ... }
}
4

2 回答 2

3

要获取类的名称,您可以使用get_class并传递$this.

或者,get_called_class您可以在静态方法中使用它。

于 2012-10-29T12:45:45.447 回答
0

您不需要显式使用类名,您可以使用self.

class SomeClass {

    private static $instance;

    public static function getInstance() {

          if (self::$instance) {
               // ...
          }

    }

}

键盘

于 2012-10-29T12:43:27.167 回答