Как безопасно использовать объекты в шаблонах - PullRequest
1 голос
/ 18 сентября 2010

Современные движки шаблонов для php (скажем, dwoo или smarty) могут использовать объекты в качестве переменных. Вы можете использовать {$ obj-> method ()}, что очень удобно, и я часто этим пользуюсь. Но существует явная проблема безопасности с экспортом непосредственно из ORM объектов, которые имеют такие методы, как вставка, удаление и т. Д. Есть ли какой-нибудь вменяемый метод, чтобы выставить только часть методов в движок шаблонов? Я думал о оболочке, раскрывающей только методы из белого списка:

$aTplVars = array (new TplWrapper(new User($nUserId),  array('getAccount','getStatus')));

Что вы думаете (есть явные потери производительности)? Или может быть что-то подобное в некоторых существующих шаблонизаторах для php?

1 Ответ

0 голосов
/ 18 сентября 2010

Вы не можете "покалечить" объект в PHP (или любом другом языке, который я знаю) после того, как он был создан. Использование объектов может показаться приятным, но вы должны получить соответствующие данные для вашего шаблона в контроллере и поместить их в массив, который вы можете безопасно назначить шаблону.

...