<?php
class A {
private static $_count = 0;
private $_number;
function __construct() {
$this->_number = ++static::$_count;
}
public function __toString(){
return static::$_count . ' | ' . $this->_number . "\n";
}
public function __invoke(){
return $this->_number;
}
}
class B {
private $_status = array();
}
class C {
public static function __invoke(){
return new B();
}
}
$a = new A();
$b = new A();
$c = new A();
$d = new A();
echo $a, $b, $c, $d;
echo $a(), $b(), $c(), $d();
Fatal error: Method C::__invoke() cannot be static in /in/erq4P on line 24
Process exited with code 255.
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Fatal error: Method C::__invoke() cannot be static in /in/erq4P on line 24
Process exited with code 255.
Warning: The magic method __invoke() must have public visibility and cannot be static in /in/erq4P on line 24
4 | 1
4 | 2
4 | 3
4 | 4
1234
Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45
4 | 1
4 | 2
4 | 3
4 | 4
1234
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Parse error: syntax error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or '$' in /in/erq4P on line 6
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or '$' in /in/erq4P on line 6
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/erq4P on line 3
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/erq4P on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/erq4P on line 3
Process exited with code 255.