[quote]isset() will return FALSE if testing a variable that has been set to NULL.[/quote]
Catalin Trifu wrote:
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