Php 为什么可以';我不是用$this作为我的方法,而是我的属性吗?
我从面向对象的PHP开始,但我在使用Php 为什么可以';我不是用$this作为我的方法,而是我的属性吗?,php,object,methods,this,Php,Object,Methods,This,我从面向对象的PHP开始,但我在使用$this 这是我当前的代码: class Computer { public $CPU = "<br> Die CPU <br>"; public function starten() { echo "<br> Computer ist gestartet. <br>"; } public function herunterfahren(&$sekun
$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();
类计算机{
公共$CPU=“
芯片CPU
”;
公共功能starten(){
echo“
计算机是盖世太特。
”;
}
公共职能部门herunterfahren(&$sekunden=20){
echo“以$sekunden sekunden heruntergefahren表示的个人计算机数据”;
}
公共职能贝德斯(){
echo“Die CPU Methode klatsch:.$this->CPU.”raus,beim herunterfahren sieht es anders aus:.$this->herunterfahren();
}
}
$meinComputer=新计算机();
$meinComputer->starten();
echo$meinComputer->CPU;
$meinComputer->CPU=“3GHz。”;
echo$meinComputer->CPU;
回声“
”;
$meinComputer->herunterfahren();
回声“
”;
$dauer=12;
$meinComputer->herunterfahren($dauer);
回声“
”;
$meinComputer->beides();
输出工作正常,但$meinComputer->beides()代码>不显示$this->herunterfahren()代码>零件。输出为:
这是一个20兆赫的数字计算机。芯片CPU方法klatsch:3GHz。raus,beim herunterfahren sieht和anders aus:
而不是:
这是一个20兆赫的数字计算机。芯片CPU方法klatsch:3GHz。raus,我是herunterfahren sieht和anders aus:20年后的个人电脑记录
当我输入$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();
该方法立即运行,打印下面的文本
在不返回任何值的情况下,current echo函数可以使用
"Der PC wird in $sekunden(value) Sekunden heruntergefahren"
要修复此问题,请在herunterfahren
方法中使用return
而不是echo
,如下所示:
公共函数herunterfahren(&$sekunden=20){
返回“以$sekunden sekunden heruntergefahren为单位的PC数据。”;}
完成此操作后,您需要注意此部分:
echo $meinComputer->herunterfahren();
变量前的&
表示通过引用传递。因此,如果方法中的代码更改此变量值,则传递给此方法的任何变量都会更改该值。因此,由于您正在使用OOP,而您对$sekunden
不做任何操作,因此使用&$sekunden
是没有意义的。只需在$sekunden
之前删除&
。