Почему я не могу использовать $ this для моего метода, кроме моей собственности? - PullRequest
0 голосов
/ 26 апреля 2020

Я начинаю с объектно-ориентированного 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 P C необычно в 20 сек. Heruntergefahren.D ie Метод CPU, klatsch: 3GHz. raus, beim herunterfahren sieht es anders aus:

вместо:

Der P C Wird in 20 Sekunden heruntergefahren.D ie Методы ЦП. raus, beim herunterfahren sieht es anders aus: Der P C wird in 20 Sekunden heruntergefahren.

Когда я ввожу параметр для $sekunden, например: publi c function beides () {

echo "D ie CPU Method klatsch:". $ this-> CPU. "raus, beim herunterfahren sieht es anders aus:". $ Этом-> herunterfahren (10); }

он ничего не показывает, после запуска: $meinComputer->beides();

Я не понимаю, почему он не может вывести эту часть кода ..

1 Ответ

0 голосов
/ 27 апреля 2020

метод

$this->herunterfahren()

печатает текст с некоторым параметром, он ничего не возвращает .. поэтому, когда он оценивается в этой строке:

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

метод работает правильно не печатая текст ниже
без возврата какого-либо значения, текущая функция эха может использовать

"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();
...