I am not sure what the title should be, but the code should explain it better:
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
Any idea why I got 20 instead of 21? Even then the code below works: 
$i = null ;
echo ++$i ; // output 1
I know Group is an object that implements __toString , i expected ++ to work with the string from __toString or at least throw an error 
 
     
     
     
     
    