PHP - 破坏说明

PHP - destruct clarification

我正在学习 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 的新实例时 class,它会自动销毁。这使我无法更改老板的"evilness"。

如何更改代码,或者 php 设置不自动调用 destruct(),而仅使用 unset() 函数调用其他方法class?

变化 我已经更新了拼写错误,但提供的答案仍然适用。

我测试了下面的代码,它有效吗?您必须在 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!

正如您所见,constructorchangeEvilness() 函数和 destructor 都被调用了。

同样很高兴知道 php 过程在到达最后一行代码时结束。所以因为你在 $ganon = new Boss 之后什么都没有,它会停止 php 进程并调用析构函数。