我正在学习使用PHP的OOP,我正试图解决这个问题:
我在我的MAMP安装上使用php版本5.6.10,如果这有所不同吗?
这是我的代码:
<?php
class Baddie {
public $evilness = 10;
}
class Boss extends Baddie {
public $evilness = 50;
public function changeEvilness($value)
{
//$this->$evilness = $value; Had this, which was a typo
$this->evilness = $value;
}
public function __destruct() {
echo "You beat the boss!";
}
}
$ganon = new Boss;
?>
//Note the code is from Rob Percivals Udemy course, hence the gaming references.
因此,当我调用Boss类的新实例时,它会自动被销毁。这使我无法改变邪恶&#34;老板。
如何更改代码,或者自动调用destruct()的php设置,但只能使用unset()
函数,以便我可以使用该类调用其他方法?
更改 我更新了拼写错误,但提供的答案仍然适用。
答案 0 :(得分:1)
我测试了下面的代码,它有效吗?您必须在changeEvilness函数
中将$this->$evilness
更改为$this->evilness
<?php
class Baddie {
public $evilness = 10;
}
class Boss extends Baddie {
public $evilness = 50;
public function changeEvilness($value)
{
$this->evilness = $value;
}
public function __destruct() {
echo "You beat the boss!";
}
}
$ganon = new Boss;
echo $ganon->evilness ."\n";
$ganon->changeEvilness(1337);
echo $ganon->evilness ."\n";
?>
此输出:
50
1337
You beat the boss!
如您所见,constructor
,changeEvilness()
函数和destructor
都被调用。
同样很高兴知道php进程在到达最后一行代码时结束。因为在$ganon = new Boss
之后你没有任何东西,它将停止php进程并调用析构函数。