Edit report at http://bugs.php.net/bug.php?id=51280&edit=1

 ID:          51280
 Updated by:  hholz...@php.net
 Reported by: olamedia at gmail dot com
 Summary:     Calculate expression before using it as argument
-Status:      Open
+Status:      Bogus
 Type:        Feature/Change Request
 Package:     *General Issues
 PHP Version: 5.3.2

 New Comment:

Expected behavior, see:



http://php.net/manual/en/language.operators.assignment.php



  [...]

  The value of an assignment expression is the value assigned. 

  That is, the value of "$a = 3" is 3.  

  [...]


Previous Comments:
------------------------------------------------------------------------
[2010-03-12 08:45:19] olamedia at gmail dot com

Description:
------------
Calculate expression before using it as argument in function and with
echo.

Test script:
---------------
class p{

        protected $_name = null;

        protected $_value = null;

        public function __construct($name, $value){

                $this->_name = $name;

                $this->_value = $value;

        }

        public function is($value){

                $this->_value = $value;

                return $this;

        }

        public function __toString(){

                return "$this->_name = $this->_value";

        }

}

class a{

        protected $_a = null;

        public function __set($name, $value){

                $this->_a[$name] = new p($name, $value);

                return $this->_a[$name];

        }

        public function __get($name){

                if (!isset($this->_a[$name])){

                        $this->_a[$name] = new p($name, null);

                }

                return $this->_a[$name];

        }

}

class q{

        public function where($var){

                echo $var;

        }

}

$a = new a();

echo $a->x = 2; // "2" (Expected: "x = 2")

echo "\r\n";

echo $a->x; // "x = 2"

echo "\r\n";

$q = new q();

$q->where($a->x = 2); // "2" (Expected: "x = 2")

echo "\r\n";

$q->where(($a->x = 2)); // "2" (Expected: "x = 2")

Expected result:
----------------
x = 2

x = 2

x = 2

x = 2

Actual result:
--------------
2

x = 2

2

2


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



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=51280&edit=1

Reply via email to