How does this have *anything* to do with the discussion at hand?
On Tue, Jan 12, 2010 at 9:09 PM, mm w <0xcafefeed@gmail.com> wrote:
> don't worry it's only for people who are working with MVC and
> RootObject structure, there is too much magics already and __cast is
> not needed at all,
> as we cannot monkey patch to add an observer on itself, a nice
> solution should have a catchable object so __catch any calls
>
> function __catch($data, $type) {
> if (method == $type) {
> if (data[selector] = 'setValue' && observedValueForKeyPath) {
> $this->_setValue(($data['arg']);
> return;
> }
> }
> continue_natural_call();
> }
>
> we could imagine to have a root-object-built-in-class that is
> naturally observable, or a root classObject at all, anyway it's only
> something for people who are doing OO programming,
> so don't worry
>
> On Tue, Jan 12, 2010 at 2:40 PM, Chris Stockton
> <chrisstocktonaz@gmail.com> wrote:
>> Hello,
>>
>> On Mon, Jan 11, 2010 at 8:32 PM, mm w <0xcafefeed@gmail.com> wrote:
>>> cast is not needed in PHP
>>>
>>> i 'd rather be more interesting in
>>>
>>> class Obj {
>>> function __catch($data, $type) {
>>> //$type [ static_method, method, get_property, set_property]
>>> if (observed && $type == set_property &&
>>> somevalueIsObserved) {
>>>
>>> $observer->notify("somevalue::valueWillChanged");
>>> $this->somevalue = $data['somevalue'];
>>> $observer->notify("somevalue::valueDidChanged");
>>> } else {
>>> continue__call();
>>> }
>>> }
>>> }
>>
>> What? ...
>>
>>>> Etienne Kneuss wrote:
>>>> This is where operator over-loading would be useful however perhaps only
>>>> explicit casts would make sense here.
>>
>> I beleive adding a __cast(string $type) would be a useful feature for
>> me, very often I have a toArray method defined. I agree with you that
>> due to unexpected edge cases with operator precedence and general type
>> juggling that __cast should only be called on explicit (cast).
>>
>> I.E.:
>> class Int { public function __cast($type) { return 'int' == $type ? 15 : 0; } }
>> $r = new Int;
>>
>> var_dump($r + 1); // 2
>> var_dump((int) $r + 1); // 16
>> var_dump((bool) $r + 1); // 1
>>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>