在子节点后自动调用父构造函数PHP
我尝试使用构造函数的父类名称,并部分为我工作。在子节点后自动调用父构造函数PHP
到
“达斯·维达法”
像构造函数,但从来没有首先调用来电
“卢克·天行者构造” ..
有人知道如何做它?
例如:
Darth.php
Luke.php
include("Darth.php")
class LukeSkywalker extends DarthVader{
public function __constructor(){
echo "- He told me enough! He told me you killed him!\n"
$this->response();
}
}
预期结果:
欧比旺从来没有告诉你发生了什么,以你的父亲。
他告诉我够了!他告诉我你杀了他!
号我是你爸爸
我真的会如此,自动喜欢它。
按照文档:http://php.net/manual/en/language.oop5.decon.php
注:父构造函数不如果子类定义了一个构造函数,则隐式调用。为了运行父构造函数,需要在子构造函数中调用parent :: __ construct()。如果孩子没有定义一个构造函数,那么它可能像父类一样继承父类(如果它没有被声明为私有的)。
默认情况下,父构造函数从不自动调用(除非在子类中定义)。即使在Java中,您也必须明确地调用它们,它必须是第一条语句。
请注意,在PHP中,构造函数的名称是__construct
,它应该是一个神奇的方法,因为它是在创建对象时调用的。
class LukeSkywalker extends DarthVader{
public function __construct(){ //See the name of magic method. It is __construct
parent::__construct(); //Call parents constructor
echo "- He told me enough! He told me you killed him!\n"
$this->response();
}
}
使用上面的代码,并在每次执行时,你会得到期望的结果:
new LukeSkywalker();
除了默认情况下,他们被自动调用,除非他们是在孩子中定义的。 – Frug 2014-01-14 20:50:45
嘿,现在 - 剧透! :D – andrewsi 2013-05-09 19:21:16
我找到了“卢克天行者构造函数”没有运行的原因。只是。是“__construc”,而不是“__constructor”,这支持@Marc B的理论。谢谢你们 – iLevi 2013-05-09 22:25:47