【问题标题】:Why can't I use $this for my method but my property?为什么我不能将 $this 用于我的方法但我的属性?
【发布时间】: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-&gt;beides(); 没有显示$this-&gt;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-&gt;beides();

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

【问题讨论】:

  • &amp; 变量之前的意思是passing by reference。因此,如果方法内的代码更改此变量值,则传递给此方法的任何变量都会更改值。因此,当您使用 OOP 并且您对 $sekunden 什么都不做时,使用 &amp;$sekunden 毫无意义。只需删除 $sekunden 之前的 &amp;

标签: php object methods this


【解决方案1】:

方法

$this->herunterfahren()

打印带有一些参数的文本,它不返回任何东西.. 所以当它在这一行中被评估时:

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

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

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

要解决这个问题,在 herunterfahren 方法中使用 return 而不是 echo,如下所示:

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

之后你需要处理这部分:

echo $meinComputer->herunterfahren();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2019-09-23
    • 2015-12-15
    • 1970-01-01
    • 2011-07-20
    • 2012-01-15
    相关资源
    最近更新 更多