ID: 47765 User updated by: biohazard999 at gmx dot at Reported By: biohazard999 at gmx dot at Status: Open -Bug Type: Documentation problem +Bug Type: Scripting Engine problem Operating System: Windows XP SP3 -PHP Version: Irrelevant +PHP Version: 5.3.0RC1 New Comment:
Think it's a script engine problem or a documentation problem Previous Comments: ------------------------------------------------------------------------ [2009-03-24 19:10:07] biohazard999 at gmx dot at Description: ------------ If the object to invoke is stored in a static property or is returned by a static function __invoke will not be called. Especially for singletons is this extremly missleading. Either it is an documentation problem or something other is wrong. Actual documentation: The __invoke method is called when a script tries to call an object as a function. Reproduce code: --------------- class foo { public static $instance = null; //only public for this example public static function get() { if(is_null(self::$instance)) self::$instance = new self; return self::$instance; } public function __invoke($name) { echo 'Hello '.$name; } } //1) foo::get()('World'); //2) foo::get(); foo::$instance('World'); //3) $bar = foo::get(); $bar('World'); Expected result: ---------------- 1) //Here is the parsing-error partial expected Hello World 2) Hello World 3) Hello World Actual result: -------------- 1) Parse error: parse error in test.php on line 23 2) Notice: Undefined variable: instance in test.php on line 27 Fatal error: Function name must be a string in test.php on line 27 3) Hello World //Behavior as expected ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47765&edit=1