【发布时间】:2020-08-10 08:30:03
【问题描述】:
我从面向对象的 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(); 部分。输出是:
在 20 Sekunden heruntergefahren.Die CPU Methode klatsch 中的 Der PC 线:3GHz。 raus,beim herunterfahren sieht es anders aus:
代替:
在 20 Sekunden heruntergefahren.Die CPU Methode klatsch 中的 Der PC 线:3GHz。 raus, beim herunterfahren sieht es anders aus: Der PC wird in 20 Sekunden heruntergefahren。
当我像这样输入$sekunden 的参数时:
公共函数 beides() {
echo "Die CPU Methode klatsch:" 。 $this->CPU 。 ” raus,beim herunterfahren sieht es anders aus:“。 $this->herunterfahren(10); }
运行后什么都不显示:$meinComputer->beides();
我不明白,为什么它不能输出那部分代码..
【问题讨论】:
-
&变量之前的意思是passing by reference。因此,如果方法内的代码更改此变量值,则传递给此方法的任何变量都会更改值。因此,当您使用 OOP 并且您对$sekunden什么都不做时,使用&$sekunden毫无意义。只需删除$sekunden之前的&。