ID:               38745
 User updated by:  arqentus at arqentus dot com
 Reported By:      arqentus at arqentus dot com
 Status:           Open
 Bug Type:         Class/Object related
 Operating System: Windows 2003
 PHP Version:      5.1.6
 New Comment:

Note: The extract code was texted with EXTR_OVERWRITE & EXTR_IF_EXISTS.
The "EXTR_REFS" was a final foolish attempt to see how it was going to
react( expecting a error feedback, but nothing came ). Forgot to remove
it from the submitted code.

I'm including this comment, to be sure this bug does not get closed
becouse you think i used the wrong EXTR ;)


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

[2006-09-07 22:01:51] arqentus at arqentus dot com

Description:
------------
extract does not override the values when using a extended class.

Note: Using a manual fill, will work:

class cText extends cField{ 

        function __construct( $fields = array() ) {
                foreach($fields as $key => $val ) {
                        $this->{$key} = $val;
                }
                //extract($fields, EXTR_REFS);
        }
}

Looks like the extract can't handle the extend class.
Note: Using a normal NONE extended class, and extract will work.
Somehow it seems to lack the scope. Yet, a 'manual' foreach loop is
able to access the scope.

Differend combination have been tried ( moving the construct to the
parent, passing the fields to the parent and extracting there, etc ).
None are able to work.

Reproduce code:
---------------
class cField{

        var $desc = 'xxx';
        
}

class cText extends cField{ 

        function __construct( $fields = array() ) {
                extract($fields, EXTR_REFS);
        }

}

$user_name = new cText( array ( _desc => 'Name' ) );
echo $user_name->desc;

Expected result:
----------------
The expect result is: 'Name';



Actual result:
--------------
The result archieved is: 'xxx';


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


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

Reply via email to