From:             tudor at tudorholton dot com
Operating system: Ubuntu
PHP version:      5.2SVN-2009-09-05 (snap)
PHP Bug Type:     Scripting Engine problem
Bug description:  Multiple object selection operators in quoted strings

Description:
------------
This is actually on Ubuntu Jaunty which is PHP version 5.2.6-3ubuntu4.2

Using multiple object access operators in a row inside a double-quoted
string causes the error:
Catchable fatal error: Object of class ... could not be converted to
string

The problem is that the operators are interpreted from left to right and
then converted to string.  The last operation should be that the object is
converted to a string.

This is particularly important when using OO code because frequently the
current object ($this) references another object and then gets an attribute
from that. e.g. $this->that->attribute

Reproduce code:
---------------
<?php
    class A { var $attr = 'Hello A!'; }
    class B {
        var $a;
        var $attr = "Hello B!";

        function __construct() {
            $this->a = new A();            
        }

        function output() {
            echo "$this->attr";
        }
    }

    $b = new B();
    $b->output();
    echo "$b->attr";
    echo "$b->a->attr";
?>

Expected result:
----------------
Hello B!Hello B!Hello A!

Actual result:
--------------
Hello B!Hello B!
Catchable fatal error: Object of class A could not be converted to string
in test.php on line 19

-- 
Edit bug report at http://bugs.php.net/?id=49471&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=49471&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=49471&r=trysnapshot53
Try a snapshot (PHP 6.0):            
http://bugs.php.net/fix.php?id=49471&r=trysnapshot60
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=49471&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=49471&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=49471&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=49471&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=49471&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=49471&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=49471&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=49471&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=49471&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=49471&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=49471&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=49471&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=49471&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=49471&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=49471&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=49471&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=49471&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=49471&r=mysqlcfg

Reply via email to