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:

It's supposed to get fixed, but it's not regarded as critical, just
annoying, so It has to annoy a developer  enough to fix it........


Previous Comments:
------------------------------------------------------------------------

[2005-05-09 16:14:18] jason at amp-design dot net

Out of interest/curiousity, when a bug is marked as 'bogus', what does
that mean? Although you state it's currently the expected behaviour,
are you suggesting that this could change in future releases in the
long term (i.e. next major release) maybe when you go over and review
certain issues. You seem to suggest that this might be the case in the
second from last comment in http://bugs.php.net/bug.php?id=30791.

------------------------------------------------------------------------

[2005-04-14 09:40:53] [EMAIL PROTECTED]

Dupe of #30791

------------------------------------------------------------------------

[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