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
>