Hello,
Le samedi 04 octobre 2008 à 22:59 +0200, Kuba Wieczorek a écrit :
> Well, this is a sample code for this:
>
> <?php
> header('Content-type: text/plain');
>
> class test
> {
> protected $a;
> protected $b = 'test';
>
> public function __get($var)
> {
> return $this->$var;
> }
> }
>
> $test = new test;
> print 'a: ' . var_export($test->a, true) . ' ' .
> var_export(empty($test->a), true) . "\n";
> print 'b: ' . var_export($test->b, true) . ' ' .
> var_export(empty($test->b), true) . "\n";
> ?>
>
> This is the current result:
> a: NULL true
> b: 'test' true
>
> The expected one should be:
> a: NULL true
> b: 'test' false
Please implement magic method __isset($var) and try again. You'll see it
works fine this way.
Did a little test :
class test {
private $a;
private $b = 'foo';
public function __get($var) {
echo "__get($var)\n";
return $this->$var;
}
public function __isset($var) {
echo "__isset($var)\n";
return isset($this->$var);
}
}
$t = new test();
var_dump($t->a, empty($t->a));
var_dump($t->b, empty($t->b));
Output :
__get(a)
__isset(a)
NULL
bool(true)
__get(b)
__isset(b)
__get(b)
string(3) "foo"
bool(false)
Mark
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php