Re: __toString(), __toArray()

From: Date: Wed, 13 Jan 2010 02:10:59 +0000
Subject: Re: __toString(), __toArray()
References: 1 2 3 4 5 6  Groups: php.internals 
Request: Send a blank email to internals+get-46665@lists.php.net to get a copy of this message
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 > >

« previous php.internals (#46665) next »