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

Reply via email to