【发布时间】:2017-04-02 04:41:06
【问题描述】:
我很困惑这两种情况之间的差异或性能增益。为什么会选择一个而不是另一个?
父类:
class exampleB
{
public function __construct($arg1, $arg2)
{
// Do something with the arguments.
}
}
儿童A班
class exampleA extends exampleB
{
public function make($arg1, $arg2)
{
parent::__construct($arg1, $arg2);
}
}
运行第一个示例:
$exampleA = new exampleA();
$exampleA->make('arg1', 'arg2');
第二个例子是:
儿童A类
class exampleA extends exampleB
{
public static function make($arg1, $arg2)
{
return new static($arg1, $arg2);
}
}
运行第二个例子:
exampleA::make('arg1', 'arg2');
有人能告诉我这两种情况之间的优缺点吗?我之所以有这些示例,是因为我不想重写父类的构造函数。
【问题讨论】:
-
我也不会使用,
$exampleA = new exampleA('arg1', 'arg2');是你所需要的,因为exambleB中的构造函数会被自动调用,只要你不覆盖它。 -
我不想重写父类中的现有构造函数,这就是我想出这些解决方案的原因。应该加上那个。
标签: php oop inheritance extends late-static-binding