Ich bin nicht sicher, was der Titel sein soll, aber der Code sollte es besser erklären:Erhöhungsschritte auf „__toString“
class Group {
private $number = 20;
public function __toString() {
return "$this->number";
}
}
$number = new Group();
echo $number, PHP_EOL;
echo ++ $number, PHP_EOL;
echo PHP_EOL;
$number = "20";
echo $number, PHP_EOL;
echo ++ $number, PHP_EOL;
echo PHP_EOL;
$number = 20;
echo $number, PHP_EOL;
echo ++ $number, PHP_EOL;
Ausgang:
20
20 <--- Expected 21
20
21
20
21
Jede Idee, warum ich 20
bekam statt 21
? Selbst dann unterhalb der Code funktioniert:
$i = null ;
echo ++$i ; // output 1
Ich weiß Group
ein Objekt, das __toString
implementiert, erwartete ich ++
von __toString
mit der Zeichenfolge zu arbeiten oder zumindest throw an error
Bietet PHP eine Möglichkeit, die Inkrementoperatoren zu überladen? Da Ihre Klasse nicht einfach in einen Zahlentyp konvertiert werden kann, müssen Sie PHP wahrscheinlich mitteilen, was Sie tun wollen. – dlp
Wenn Sie in der Group-Klasse $ number nicht privat deklarieren und dann versuchen, echo ++ $ number-> number, PHP_EOL; funktioniert? – LuckyStarr
Nein .. aber das war inkrement auf string und auch wenn sonst .. ich sollte einen fehler bekommen – Baba