Re: __toString(), __toArray()

From: Date: Wed, 13 Jan 2010 02:11:51 +0000
Subject: Re: __toString(), __toArray()
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to internals+get-46666@lists.php.net to get a copy of this message
the multiplication of magic, the pointed point, need to read more carefully On Tue, Jan 12, 2010 at 6:10 PM, Eddie Drapkin <oorza2k5@gmail.com> wrote: > 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 (#46666) next »