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

 ID:                 53731
 User updated by:    blue-tidus159 at hotmail dot com
 Reported by:        blue-tidus159 at hotmail dot com
 Summary:            Function arguments can only be changed when native
                     values are given.
 Status:             Open
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Windows 7 x64
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

I just realized that a similar effect can be reached by setting the
reference mark before the parameter name. The problem is just that the
original object will be changed too.



function a(&$a){

      var_dump($a);

}



$test = new A();

var_dump($test); // object A

a($test) // int 1

var_dump($test); // int 1 => this should still be object A, you should
create internally a new reference parameter variable referencing the
passed object if you know what i mean.



I know that native values get copied and that there is no problem with
overwriting the value. But objects could be handled like this: if used
as parameter value, create a new reference variable referencing the
object, this variable can then be overwritten without changing the
original object.


Previous Comments:
------------------------------------------------------------------------
[2011-01-12 22:09:04] blue-tidus159 at hotmail dot com

Little typo, i meant:



set_error_handler('errorHandler');

------------------------------------------------------------------------
[2011-01-12 22:07:57] blue-tidus159 at hotmail dot com

Description:
------------
The problem with debug_backtrace() is, that only function parameter
values which are native types can be changed, but not if the value is an
object.

Test script:
---------------
<?php



function errorHandler($level, $msg){

        $debug = debug_backtrace();

        $debug[1]['args'][0]='1';

        return true;

}



set_error_handler('error');



function a($a){ // E_RECOVERABLE_ERROR

        var_dump($a); 

}



class A{}



a(1);

a(2);

a(new A());



?>





Expected result:
----------------
int 1

int 1

int 1

Actual result:
--------------
int 1

int 1

object A


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



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

Reply via email to