我不知道標題應該是什麼,但代碼應該更好地解釋它:增量的「__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;
輸出:
20
20 <--- Expected 21
20
21
20
21
任何想法,爲什麼我得到20
代替21
?即使這樣下面的代碼工作:
$i = null ;
echo ++$i ; // output 1
我知道Group
是實現__toString
一個對象,我預計++
從__toString
或至少throw an error
PHP提供了一種方式來重載增量運算符嗎?由於你的類不容易轉換爲數字類型,你可能不得不告訴PHP你想要做什麼。 – dlp 2013-05-04 14:34:01
如果您在Group類中聲明$ number不是私有的,然後嘗試使用echo ++ $ number-> number,PHP_EOL;作品? – LuckyStarr 2013-05-04 14:37:17
沒有..但是這是字符串增加,即使否則..我應該得到一個錯誤 – Baba 2013-05-04 14:37:34