我剛剛學習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