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