Я только учусь ООП с PHP, и я пытаюсь получить мою голову вокруг этого:PHP - уничтожение осветление
Я использую PHP версии 5.6.10 на моей установке MAMP, если это делает разницу ??
Этот код у меня есть:
<?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, он разрушается автоматически. Это мешает мне изменить «злобность» босса.
Как изменить код или, может быть, настройку php, которая не вызвана автоматически, но только с помощью функции unset()
, чтобы я мог вызывать другие методы из этого класса?
Изменения Я обновил типографскую ошибку, но предоставленные ответы по-прежнему применяются.
Деструктор автоматически вызывается, когда больше нет ссылки на конкретный объект. Не могу изменить его (btw: '$ this -> $ evilness' ->' $ this-> evilness') – Rizier123
Итак, если я хочу вызвать функцию внутри класса после того, как я определил экземпляр, мне просто нужно иметь класс без деструктора? –
Приведенный пример действительно плох. «Деструктор» можно использовать для сохранения свойств текущего экземпляра в базе данных/файле/..., когда к нему больше нет экземпляров. Если вы хотите вызвать метод после создания класса, вам просто нужно сделать: '$ foo = new Boss(); $ Foo-> changeEvilness (42) '. Примечание: класс/функция должен ** никогда не отвечать за вывод вывода – DarkBee