Допустим есть объект
class Object {
protected $_data;
public function __construct()
{
$this->_data = array();
}
public fucntion __get($name)
{
return (isset($this->_data[$name]) ? $this->_data[$name] : null);
}
public function _set($name, $value)
{
$this->_data[$name] = $value;
}
}
тобишь типа ArrayObject. Когда мы показываем пользователю данные в формате html мы обезопасеваем их с помощью htmlspecialchars. Но нам может также понадобиться оперировать чистыми данными, допустим сделать копию их или еще кудато записать или отправить, ну вообщем надо и с чистыми работать.
Так вот, например, мы передаём данные объекта в представление. В этом топике я рассматриваю памятиэкономный способ, так скажем. Тобишь в представление мы передаём ссылку на объект
$object->login = $login;
$view->user = $object;
Потом при выводе представления происходит что то типа такого:
echo $this->user->login
или
echo $this->escape($this->user->login)
Это нормально как бы, ведь представление определяет формат вывода, в данном случае декорируя в escape данные с помощью htmlspecialchars.
Также есть много разных вариантов реализации способов и мест вызова декорирования данных, типа:
$view->assignHtml('login', $user->login)
$view->user = $user->asHtml();
echo $this->user->login_html
//или внутри шаблона
view::__get($name)
{
return $this->_data[$name]->asHtml();
}
Короче где правильнее делать преобразование, так скажем "формата данных", где переключать объекты на отдачу данных в определённом формате или преобразовывать данные объекта в этот формат, или просить у объекта данные в определённом формате???? Ведь допустим вызыв
echo json_encode($object)
пойдёт с чистыми данными, значит надо, допустим переключить объект на отдачу его данных в другом форамте, типа
echo json_encode($object->asHtml())
Вообщем что скажите спецы?
зы: хуёвый __get() в пыхе, надо бы еще параметров ;)