Re: __toString(), __toArray()

From: Date: Wed, 13 Jan 2010 02:29:41 +0000
Subject: Re: __toString(), __toArray()
References: 1 2 3 4 5 6 7 8  Groups: php.internals 
Request: Send a blank email to internals+get-46667@lists.php.net to get a copy of this message
What you're proposing is just forcing __call, _callStatic, __get and __set into a single method, which does nothing to reduce the amount of magic, only obfuscate it. And it certainly offers no alternative to "__cast", at least not that I can see. On Tue, Jan 12, 2010 at 9:11 PM, mm w <0xcafefeed@gmail.com> wrote: > 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 (#46667) next »