Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么可以';我不是用$this作为我的方法,而是我的属性吗?_Php_Object_Methods_This - Fatal编程技术网

Php 为什么可以';我不是用$this作为我的方法,而是我的属性吗?

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

我从面向对象的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();
类计算机{
公共$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
之前删除
&