如何使用PHP超类中定义的继承工厂方法构建子类?
How to build a subclass using an inherited factory method defined in the superclass in PHP?
我是 PHP 的新手。我有三个 class,比如 A
、B
和 C
,其中 B
和 C
直接继承自 A
.我的问题是,我需要一个静态工厂,比如 createInstance()
,它为 class A
定义了 一次 ,并且适用于它的整个后代。因此,当有人调用 A::createInstance()
时,它 return 是类型 A
的对象,而调用 B::createInstance()
return 是 B
的实例,并且C::createInstance()
return 是 C
的实例。我将以下代码放在 createInstance()
定义中 class A
:
public static function createInstance() {
return new self();
}
但这不是满足我需求的解决方案,因为 self
总是指 class A
而不管 class 调用什么。换句话说,调用 B::createInstance()
和 C::createInstance
总是 return 类型为 A
的对象。我怎样才能创建这样一个 return 是适当 class 对象的工厂方法?
PHP 有一个 static
关键字,您可以使用:
public static function createInstance() {
return new static();
}
我是 PHP 的新手。我有三个 class,比如 A
、B
和 C
,其中 B
和 C
直接继承自 A
.我的问题是,我需要一个静态工厂,比如 createInstance()
,它为 class A
定义了 一次 ,并且适用于它的整个后代。因此,当有人调用 A::createInstance()
时,它 return 是类型 A
的对象,而调用 B::createInstance()
return 是 B
的实例,并且C::createInstance()
return 是 C
的实例。我将以下代码放在 createInstance()
定义中 class A
:
public static function createInstance() {
return new self();
}
但这不是满足我需求的解决方案,因为 self
总是指 class A
而不管 class 调用什么。换句话说,调用 B::createInstance()
和 C::createInstance
总是 return 类型为 A
的对象。我怎样才能创建这样一个 return 是适当 class 对象的工厂方法?
PHP 有一个 static
关键字,您可以使用:
public static function createInstance() {
return new static();
}