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

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

提问人:Tom 提问时间:4/27/2020 最后编辑:giovybusTom 更新时间:4/27/2020 访问量:56

问:

我从面向对象的 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();

Der PC wird in 20 Sekunden heruntergefahren.Die CPU Methode klatsch: 3GHz. raus, beim herunterfahren sieht es anders aus:

而不是:

Der PC wird in 20 Sekunden heruntergefahren.Die CPU Methode klatsch: 3GHz. raus, beim herunterfahren sieht es anders aus: Der PC wird in 20 Sekunden heruntergefahren.

当我输入这样的参数时: 公共函数 beides() {$sekunden

echo “Die CPU Methode klatsch: ” .$this->CPU。“ Raus, beim herunterfahren sieht es anders aus: ” .$this->herunterfahren(10); }

运行后,它不会显示任何内容:$meinComputer->beides();

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

PHP 对象 方法 这个

评论

0赞 Felippe Duarte 4/27/2020
&在变量之前表示 。因此,如果方法中的代码更改了此变量值,则传递给此方法的任何变量都会更改该值。因此,由于您正在使用 OOP 并且您不执行任何操作,因此使用 .只需删除之前的 .passing by reference$sekunden&$sekunden&$sekunden

答:

0赞 kapreski 4/27/2020 #1

方法

$this->herunterfahren()

打印带有某个参数的文本,它不会返回任何内容。因此,当它在此行中进行评估时:

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

该方法立即运行,打印下面的
文本,而不返回当前 Echo 函数可以使用的任何值

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

要解决此问题,请使用 而不是在方法中,如下所示:returnechoherunterfahren

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

完成此操作后,您需要处理以下部分:

echo $meinComputer->herunterfahren();