为什么我不能将 $this 用于我的方法,而是将我的 属性 用于我的方法?

Why can't I use $this for my method but my property?

我刚开始使用面向对象 PHP,但我 运行 遇到了使用 $this

的问题

这是我当前的代码:

class Computer {
    public $CPU = "<br> Die CPU <br>";

    public function starten() {
        echo "<br> Computer ist gestartet. <br>";
    }

    public function herunterfahren(&$sekunden = 20) {
        echo "Der PC wird in $sekunden Sekunden heruntergefahren.";
    }

    public function beides() {
        echo "Die CPU Methode klatsch: " . $this->CPU . " raus, beim herunterfahren sieht es anders aus: " . $this->herunterfahren();
    }
}

$meinComputer = new Computer();

$meinComputer->starten();

echo $meinComputer->CPU;

$meinComputer->CPU = "3GHz.";

echo $meinComputer->CPU;
echo "<br><br>";
$meinComputer->herunterfahren();
echo "<br><br>";
$dauer = 12;
$meinComputer->herunterfahren($dauer);

echo "<br><br><br><br>";
$meinComputer->beides();

输出效果很好,但是 $meinComputer->beides(); 没有显示 $this->herunterfahren(); 部分。输出是:

PC 将在 20 秒后进行八卦 heruntergefahren.Die CPU 方法:3GHz。 out,关闭时看起来不一样:

而不是:

PC 将在 20 秒后进行八卦 heruntergefahren.Die CPU 方法:3GHz。 out,关机时看起来不一样:PC将在20秒后关机。

当我像这样输入 $sekunden 的参数时: public 函数 both() {

回声 "Die CPU Methode klatsch: " 。 $this->CPU 。 “out,关机时看起来不一样:”。 $这个->关机(10); }

在运行之后没有显示任何内容:$meinComputer->beides();

我不明白,为什么它不能输出那部分代码..

方法

$this->herunterfahren()

打印带有一些参数的文本,它没有 return 任何东西.. 所以当它在这一行中被评估时:

echo "Die CPU M..: " . $this->CPU . " raus, be... " . $this->herunterfahren();

该方法立即运行打印下面的文本
没有 return 当前回显函数可以使用的任何值

"Der PC wird in $sekunden(value) Sekunden heruntergefahren"

要解决这个问题,请在 herunterfahren 方法中使用 return 而不是 echo,如下所示:

public function herunterfahren(&$sekunden = 20) {
        return "Der PC wird in $sekunden Sekunden heruntergefahren.";}

完成之后你需要处理这部分:

echo $meinComputer->herunterfahren();