从抽象类中的静态函数获取类名

时间:2012-10-29 12:42:14

标签: php class static abstract

我有一个抽象类,它有许多静态函数(通过使用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() { ... }
}

2 个答案:

答案 0 :(得分:3)

要获取课程名称,您可以使用get_class并传递$this

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

答案 1 :(得分:0)

您不需要明确使用类名,您可以使用self

class SomeClass {

    private static $instance;

    public static function getInstance() {

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

    }

}

CodePad