Not sure I'm missing something, but I fail to see the problem: Doesn't PHP 5 use object references anyway? So function pla() { return new Foo(); } would return a reference anyway, instead of copying the object itself over?

So just removing & should fix the problem, as long as you're dealing with objects.

Cheers,
Michael

Walter A. Boring IV wrote:
Howdy,
  I'm playing with php5 (from cvs), and came accross a strange error
that doesn't happen with php4.  Maybe someone can shed some light on
this for me?

I get the error
"Fatal error: Only variables or references can be returned by reference
in /home/waboring/devel/html/test.php on line 11"

Here is the php code

<?php

class foo {
    var $test = 0;
}

class bar {
    function &get() {
        //both of these fail
        //return new foo;
        return $this->_buildOBJ();
    }

    function &_buildOBJ() {
        $obj = new foo();
        $obj->test = 'worked';
        return $obj;
    }
}

$bar = new bar;
$foo = $bar->get();
echo $foo->test;
?>

This doesn't happen in php4. This seems to go away if I change the bar::get() method to

function &get() {
$obj =& $this->_buildOBJ();
return $obj;
}


This seems like a bug to me, since both cases the return value is a
reference of an object?

Thanks Walt


-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to