我有一个包含工厂模式函数的类:
abstract class ParentObj {
public function __construct(){ ... }
public static function factory(){
//returns new instance
}
}
我需要让子类能够调用工厂函数并返回调用类的实例:
$child = Child::factory();
最好不要在子类中重写工厂函数。我尝试了多种不同的方法都没有成功。我希望避免使用反射的解决方案,例如
__CLASS__
。(如果有关系的话,我正在使用PHP 5.2.5)
return new static();
而不是这两个语句$class=get_called_class(); return new $class;
。 - Buttle Butkusget_called_class()
而不是$this
的原因是什么? - tylersDisplayNamereturn new static();
和非常相似的return new static;
在 PHP 5.6.38 中都是有效的。顺便说一句,return new get_called_class();
也是有效的。 - Tylla