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

问题描述 投票:0回答:1

我是PHP新手。我有三个类,例如ABC,其中BC直接继承自A。我的问题是,我需要一个静态工厂,例如为createInstance()类定义的[[once 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的对象。如何创建这样的工厂方法来返回适当类的对象?
php inheritance static-methods factory-pattern self
1个回答
2
投票
PHP具有可以使用的static关键字:
© www.soinside.com 2019 - 2024. All rights reserved.