Hello,

On Wed, Mar 17, 2010 at 3:40 PM, mathieu.suen
<mathieu.s...@easyflirt.com> wrote:
> Ionut G. Stan wrote:
>>
>> Hi,
>>
>> This is interesting and it appears the following change makes the snippet
>> work as expected:
>>
>>    public function &__get($name);
>
>
> I think is that the $this->anArray['bar'] = 4;
>
> Generate the following bytcode:
>
> 0  FETCH_OBJ_W                                      $0      'anArray'
> 1  ZEND_ASSIGN_DIM                                          $0, 'bar'
>
> Will the folloing :
>
> echo $this->anArray;
> $this->anArray['bar'];
>
> 0  FETCH_OBJ_R                                     $0      'anArray'
> 1  ECHO
> ...
>
>
>
> IMHO I think that the complexity of the VM is way to hight.
> That is something I am strongly agree with Gilad Bracha on adding new
> feature into a language:

What exactly would you like it do? You've two options:

1) __get, define the property, and then __set?
2) __get returns a ref that is modified

The second option is taken by PHP.
In your case you return a value, not a reference.

>
> Look at the last paragraph:
> http://gbracha.blogspot.com/2009/09/systemic-overload.html
>
>>
>>
>> On 3/17/10 3:55 PM, mathieu.suen wrote:
>>>
>>> Hi,
>>>
>>>
>>> I came across a strange behavior when using the magic method __get and
>>> some instance variable that should be an array.
>>> Consider the following example:
>>>
>>>
>>> class A
>>> {
>>>
>>> public function __get($name)
>>> {
>>> $this->$name = array();
>>> return $this->$name;
>>> }
>>>
>>> public function test()
>>> {
>>> $this->_zork['bar'] = 67;
>>> }
>>> }
>>>
>>> $a = new A;
>>> $a->test();
>>>
>>> var_dump($a);
>>>
>>>
>>> So could someone explain me what is the semantic of the above statements?
>>>
>>> Thanks
>>>
>>>
>>> -- Mathieu Suen
>>>
>>>
>>>
>>
> --Mathieu Suen
>
>
>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>



-- 
Etienne Kneuss
http://www.colder.ch

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

Reply via email to