Духовность™
Продвинутый новичок
Примитивные объекты
Есть некая обертка-хранилище для переменных, реализация интерфейса ArrayAccess. Но не суть важно. Задача обертки - содержать в себе данные, уметь считать их, отдавать, в т.ч. null когда запрашивается undefined значение. Работает так:
Решил я сделать такую фишку для обертки, когда при запрашивании скаляра, его можно было бы транслировать в любой тип
т.е. при запросе переменной из хранилища создавался бы объект "переменная" вот такого класса:
как вам идея? не накладно ли при каждом запросе переменной из хранилища создавать объект _Var?
-~{}~ 29.07.09 18:08:
UPD: КОД
Есть некая обертка-хранилище для переменных, реализация интерфейса ArrayAccess. Но не суть важно. Задача обертки - содержать в себе данные, уметь считать их, отдавать, в т.ч. null когда запрашивается undefined значение. Работает так:
PHP:
$get = new ArrayAccessImpl();
$get['a']['1'] = '00001';
$get['a']['2'] = '00002';
print_r($get);
/*
ArrayAccessImpl Object
(
[data:protected] => Array
(
[a] => ArrayAccessImpl Object
(
[data:protected] => Array
(
[1] => 00001
[2] => 00002
)
)
)
)
*/
var_dump($get['a']['undefined']); // создается и возвращается пустой объект-обертка
echo $get['a']['undefined']; // выведется пустая строка
echo $get['a']->count(); // 3
echo $get['a']->clear(); // очищаем
echo $get['a']->count(); // 0
PHP:
$get = new ArrayAccessImpl();
$get['a']['b'] = '00001';
echo $get['a']['b']->asString(); // 00001
echo $get['a']['b']->asInt(); // 1
print_r($get['a']['b']->asArray()); // Array ( [0] => 00001 )
print_r($get['a']['b']->asHash()); // Array ( [b] => 00001 )
PHP:
class _Var
{
private $var;
private $key;
public function __construct($var=null, $key=null)
{
$this->var = $var;
$this->key = $key;
}
public function asInt()
{
return intval($this->var);
}
public function asString()
{
return strval($this->var);
}
// По умолчанию выводим как строку
public function __toString()
{
return strval($this->var);
}
public function asBool()
{
return (boolean)$this->var;
}
public function asArray()
{
return (array)$this->var;
}
public function asHash()
{
return array($this->key => $this->var);
}
// далее можно придумать кучу полезных методов
}
-~{}~ 29.07.09 18:08:
UPD: КОД


