Tôi không chắc chắn những gì tiêu đề nên được, nhưng mã nên giải thích nó tốt hơn:Tăng trên "__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;
Output:
20
20 <--- Expected 21
20
21
20
21
Bất cứ ý tưởng tại sao tôi đã 20
thay vì 21
? Thậm chí sau đó vào mã bên dưới hoạt động:
$i = null ;
echo ++$i ; // output 1
Tôi biết Group
là một đối tượng mà thực hiện __toString
, tôi mong đợi ++
để làm việc với các chuỗi từ __toString
hoặc ít nhất throw an error
PHP có cung cấp một cách để quá tải các nhà khai thác tăng? Vì lớp của bạn không dễ dàng chuyển đổi thành kiểu số, bạn có thể phải nói cho PHP biết bạn muốn ++ làm gì. – dlp
nếu bạn khai báo số $ không riêng tư trong lớp Nhóm và sau đó thử echo ++ $ number-> number, PHP_EOL; công trinh? – LuckyStarr
Nope .. nhưng đó là tăng trên chuỗi và thậm chí nếu không .. tôi sẽ nhận được một lỗi – Baba