提问人:Tom 提问时间:4/27/2020 最后编辑:giovybusTom 更新时间:4/27/2020 访问量:56
为什么我不能将$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();
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();
我不明白,为什么它不能输出那部分代码。.
答:
方法
$this->herunterfahren()
打印带有某个参数的文本,它不会返回任何内容。因此,当它在此行中进行评估时:
echo "Die CPU M..: " . $this->CPU . " raus, be... " . $this->herunterfahren();
该方法立即运行,打印下面的
文本,而不返回当前 Echo 函数可以使用的任何值
"Der PC wird in $sekunden(value) Sekunden heruntergefahren"
要解决此问题,请使用 而不是在方法中,如下所示:return
echo
herunterfahren
public function herunterfahren(&$sekunden = 20) {
return "Der PC wird in $sekunden Sekunden heruntergefahren.";}
完成此操作后,您需要处理以下部分:
echo $meinComputer->herunterfahren();
评论
&
在变量之前表示 。因此,如果方法中的代码更改了此变量值,则传递给此方法的任何变量都会更改该值。因此,由于您正在使用 OOP 并且您不执行任何操作,因此使用 .只需删除之前的 .passing by reference
$sekunden
&$sekunden
&
$sekunden