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 に答える