On Saturday 23 September 2006 09:40, Marcus Bointon wrote:
> A simple class like this:
>
> class Myclass() {
> public $field1 = '';
> private $field2 = '';
> public function __sleep() {
> return array('field1', 'field2');
> }
> }
> $myclass = new Myclass;
>
> If I var_dump this, I get:
>
> object(Myclass)#6 (2) {
> ["field1"]=>
> string(0) ""
> ["field2:private"]=>
> string(0) ""
> }
>
> If I coerce this to an array:
>
> $arr = (array)$myclass;
>
> the properties change names in a most unhelpful way:
>
> array(2) {
> ["field1"]=>
> string(0) ""
> ["Myclassfield2"]=>
> string(0) ""
> }
>
> The docs (http://www.php.net/manual/en/language.types.array.php) say:
>
> "If you convert an object to an array, you get the properties (member
> variables) of that object as the array's elements. The keys are the
> member variable names."
>
> It seems that's not quite true.
>
> How can I stop it doing this? Looks a bit buggy to me.
>
> Marcus
> --
> Marcus Bointon
> Synchromedia Limited: Creators of http://www.smartmessages.net/
> [EMAIL PROTECTED] | http://www.synchromedia.co.uk/
To me it looks like they append the name of the class to any private
variables. I would guess that it does this to make sure you know what you're
doing and using the private variable like that. I'm just guessing at that
point though.
Try a test with multiple public and multiple private variables. If the format
of the array keys stays the same, then you should have your answer.
HTH
--
Ray Hauge
Programmer/Systems Administrator
American Student Loan Services
www.americanstudentloan.com
1.800.575.1099
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php