我一直在寻找一种方法来调用类的构造函数,类似于“parent :: _ 构造”,但对于类本身(类似于“self :: _construct “,尽管这不起作用)。为什么要这样做?考虑以下(不工作,顺便说一句)...从自己的方法调用PHP构造函数
class A {
var $name;
function __construct($name) {
$this->name = $name;
}
function getClone($name) {
$newObj = self::__construct($name);
return $newObj;
}
}
class B extends A {
}
在真正实施还有将从A级区分B类其他属性,但两者都应该有“getClone”的方法。如果对类A的对象进行调用,它应该产生类A的另一个对象,并且如果在类B上调用它应该产生类B的另一个对象。
当然,我可以通过在类中重写“getClone” B中,并将类名硬编码到方法中(即$ newObj = new B($ name)),但只需编写一次方法,告诉它实例化它自己的类的一个对象,那个班可能是。
PHP会让我这样做吗?
我不应该以任何方式调用我的方法“getClone”或暗示克隆。新对象可能与其调用该方法的对象非常不同,并且不应复制其祖先的内部数据。所以我不认为内置的克隆适合我。 – nttaylor
同样,我不认为“init()”有助于bc我仍然需要从方法内部生成并返回一个新的obj,唯一的方法是使用构造函数。否则会爱。我想我很惊讶没有相当于“父母”意味着“自我”。 – nttaylor
有一个等价物,它可以是“self”或“static”,具体取决于您的需要。 – Niko