Sherman
Mephi
Перегрузка доступа к полям класса(__get)
$itemInfo — объект класса Item, у которого также перегружен данный метод.
если сделать так:
$itmObj = new BaseItem();
$itmObj->FillData(); // заполняем объект itemInfo данными
затем:
echo $itmObj->key;
Фишка в том, что если убрать проверку на существование (isset), тогда все будет ок, если нет, тогда значение не возвращается.
Вопросы зачем мне это нужно не канают.
p.s.
а вот так, все работает:
return null;
-~{}~ 15.08.05 14:58:
господа, а кто-нибудь может объяснить, почему так работает разыменовывание?
$itemInfo — объект класса Item, у которого также перегружен данный метод.
Код:
class BaseItem
{
private $itemInfo = null;
function __consctruct()
{
$this->itemInfo = new Item();
}
...
function __get($key)
{
if (isset($this->itemInfo->$key))
{
return $this->itemInfo->$key;
}
return null;
}
...
}
$itmObj = new BaseItem();
$itmObj->FillData(); // заполняем объект itemInfo данными
затем:
echo $itmObj->key;
Фишка в том, что если убрать проверку на существование (isset), тогда все будет ок, если нет, тогда значение не возвращается.
Вопросы зачем мне это нужно не канают.
p.s.
а вот так, все работает:
Код:
$value = $this->itemInfo->$key;
if (isset($value))
{
return $value;
}
-~{}~ 15.08.05 14:58:
господа, а кто-нибудь может объяснить, почему так работает разыменовывание?
