我有一个抽象类,它有许多静态函数(通过使用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() { ... }
}
答案 0 :(得分:3)
要获取课程名称,您可以使用get_class
并传递$this
。
或者,您可以在静态方法中使用get_called_class
。
答案 1 :(得分:0)
您不需要明确使用类名,您可以使用self
。
class SomeClass {
private static $instance;
public static function getInstance() {
if (self::$instance) {
// ...
}
}
}