Hi,

    Is this really a bug. I think not.
    There is no variable $o->a or $a->b in the class OO
there is only the variable $elem and $a and $b is a member
of that array
    So ...
    The fact that PHP5 provides __set and __get magic
functions does not mean that the actual variables exist with
that particular name in the class ?
    Perhaps it would be nice to have a __isset magic function ?

Cheers
Catalin


> <?php
>
> class OO
> {
> private $elem = array("a" => 1);
>
> public function __get ($prop)
> {
> if (isset($this->elem[$prop])) {
> return $this->elem[$prop];
> } else {
> return NULL;
> }
> }
>
> public function __set ($prop, $val)
> {
> $this->elem[$prop] = $val;
> }
> }
>
> $o = new OO();
>
> echo isset($o->a) ? "yes\n" : "no\n";
> echo isset($o->b) ? "yes\n" : "no\n";
>
> echo is_null($o->a) ? "yes\n" : "no\n";
> echo is_null($o->b) ? "yes\n" : "no\n";
>
> ?>
>
> I expected something like this:
>
> yes
> no
> no
> yes
>
> But got this:
>
> no
> no
> no
> yes
>
> It looks like isset() can't handle object properties correctly. I'll post 
> the bug on php.net.
>
> -- 
> Daniel Schierbeck 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to