我刚刚学习OOP与PHP,我试图让我的头在此:PHP-destruct澄清
我在我的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.
所以,当我叫老板类的新实例,它就会自动销毁。这阻止了我改变老板的“邪恶”。
我该如何更改代码,或者可能是一个php设置,destruct()不会自动调用,而只能使用unset()
函数,以便我可以调用该类的其他方法?
更改 我已更新错字错误,但提供的答案仍然适用。
当没有对特定对象的引用时,将自动调用析构函数。不能改变它(btw:'$ this - > $ evilness' - >'$ this-> evilness') – Rizier123
因此,如果我想在定义实例后调用类中的函数,我只需要一个没有析构函数的类? –
提供的示例非常糟糕。当不再有实例时,可以使用'析构函数'将当前实例的属性保存到数据库/文件/ ...中。如果你想在创建一个类之后调用一个方法,你只需要:'$ foo = new Boss(); $ foo-> changeEvilness(42);'。注意:一个类/函数应该**从不可**输出输出 – DarkBee