ID: 32638
Updated by: [EMAIL PROTECTED]
Reported By: jason at amp-design dot net
Status: Bogus
Bug Type: Zend Engine 2 problem
Operating System: CentOS
PHP Version: 5.0.4
New Comment:
Dupe of #30791
Previous Comments:
------------------------------------------------------------------------
[2005-04-14 09:20:04] [EMAIL PROTECTED]
This is expected behaviour because __call() catches all undefined
methods, including magic ones like __toString().
You have to define __toString() or fix __call() to return appropriate
string representation of the object.
------------------------------------------------------------------------
[2005-04-08 19:49:47] jason at amp-design dot net
Description:
------------
This produces an error that should not happen. Instead, when you cast
an object to a string that has no __toString defined, it should produce
the objects internal ID. Oddly enough, the behaviour is inconsistent as
...
class A {
public function __call($name, $args) {echo $name;}
}
echo (new A);
seems to work as expected. I can't see how this should behave
differently from dereferencing from a variable.
I guess the behaviour of string casting is undefined for objects that
do not have __toString() defined, so I guess it is debateable if this
is really a bug, or a querky language "feature" ;-)
Note that this will work if one returns a value for __call().
Reproduce code:
---------------
<?php
class A {
public function __call($name, $args) {echo $name;}
}
$a = new A;
echo $a;
?>
Expected result:
----------------
Object id #insert_number_here
Actual result:
--------------
__tostring
Fatal error: Method A::__toString() must return a string value in
/data/test.php on line 21
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32638&edit=1