__get
値を返す前にオーバーライドするクラスがあります。に対して常に true を返すのはempty()
なぜですか? __call
関数の前ではなく空の後に値を返す場合のように動作します。
<?php
class ref_dummy {
private $_data = array();
public function __get($name) {
if (array_key_exists($name, $this->_data)) return $this->_data[$name];
$this->_data[$name] = 'bar'; // load sample data
return $this->_data[$name];
}
}
$dummy = new ref_dummy();
if (empty($dummy->foo)) echo 'is empty' . '<br/>';
else echo $dummy->foo . '<br/>';
?>
機能するかどうかはわかっていますが、なぜ機能しないの($dummy->foo)
か疑問に思っています。empty()