如何使用 PHP 中超类中定义的继承工厂方法构建子类?

我是 PHP 新手。我有三个类,比如A,BC, whereBC继承自A. 我的问题是,我需要一个静态工厂,比如为 classcreateInstance()定义一次A,并且适用于其后代。所以当有人调用时A::createInstance(),它返回一个类型的对象A,而调用B::createInstance()返回一个实例B,并C::createInstance()返回一个实例C。我将以下代码放在createInstance()类的定义中A

public static function createInstance() { 
   return new self();
   }

但这不是我需要的解决方案,因为无论调用哪个类,它self总是指类。A换句话说,调用B::createInstance()C::createInstance总是返回一个类型为 的对象A。如何创建这样一个返回适当类的对象的工厂方法?



ibeautiful
浏览 97回答 1
1回答

喵喵时光机

PHP 有一个static可以使用的关键字:public static function createInstance() {    return new static();}
打开App,查看更多内容
随时随地看视频慕课网APP