我尝试了一个代码,我在其子女__construct中调用了一个父方法,它返回NULL, 我不知道为什么?如果有人能向我解释原因,我会很高兴。 提前谢谢。
这是我的代码
<?php
class me
{
public $arm;
public $leg;
public function __construct()
{
$this->arm = 'beautiful';
$this->leg = 'pretty';
}
public function setLeg($l)
{
$this->leg = $l;
}
public function getLeg()
{
return $this->leg;
}
}
class myBio extends me
{
public $bio;
public function __construc()
{
$this->bio = $this->setLeg();
}
public function newLeg()
{
var_dump($this->bio);
}
public function tryLeg()
{
$this->leg = $this->getLeg();
print $this->leg;
}
}
$mB = new myBio();
$mB->newLeg();
$mB->tryLeg();
?>
我打电话的时候: $ mB = new myBio(); $ MB-GT&; newLeg();
,它返回 NULL,
BUT
$mB->tryLeg();
返回e字符串,'漂亮'。
答案 0 :(得分:1)
你在这一行上有一个错字:
$this->bio = $this->setLeg();
您正在打电话给您的二传手,而不是您的吸气者,而且由于设定者没有返回一个值,您将获得空值。
你也拼错了构造:
public function __construc()
你需要调用父构造函数。
<?php
class me
{
public $arm;
public $leg;
public function __construct()
{
$this->arm = 'beautiful';
$this->leg = 'pretty';
}
public function setLeg($l)
{
$this->leg = $l;
}
public function getLeg()
{
return $this->leg;
}
}
class myBio extends me
{
public $bio;
public function __construct()
{
parent::__construct();
$this->bio = $this->getLeg();
}
public function newLeg()
{
var_dump($this->bio);
}
public function tryLeg()
{
$this->leg = $this->getLeg();
print $this->leg;
}
}
$mB = new myBio();
$mB->newLeg();
$mB->tryLeg();