Re: [PHP5]__get, __set and isset()

From: Date: Tue, 31 Aug 2004 15:52:39 +0000
Subject: Re: [PHP5]__get, __set and isset()
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-195298@lists.php.net to get a copy of this message
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

« previous php.general (#195298) next »