Глава 15. Расширенные возможности

Содержание
Объекты
Префильтры
Постфильтры
Фильтры вывода
Управление кэшированием
Ресурсы

Объекты

Smarty позволяет использовать в шаблонах объекты PHP. Существуют два способа их вызова. Первый - зарегистрировать объект для шаблона, затем вызвать его примерно так же, как и пользовательскую функцию. Второй - присвоить объект шаблону и использовать его, как любую другую присвоенную переменную. Первый метод гораздо аккуратнее и безопаснее, так как у зарегистрированного объекта можно ограничить свойства и методы. Но, в тоже время, зарегистрированный объект нельзя использовать в циклах, нельзя помещать в массив объектов и так далее. Выбор способа за вами, но используйте по возможности первый, чтобы максимально упростить синтаксис шаблона.

В безопасном режиме недоступны приватные методы и функции (имена которых начинаются с "_"). Если существует и метод, и свойство с одинаковыми именами, то будет использован метод.

Вы можете ограничить использование объекта только некоторыми методами и свойствами. Для этого перечислите их в массиве и укажите этот массив третьим параметром при регистрации объекта.

По умолчанию, параметры из шаблона передаются объекту точно так же, как и пользовательской функции. Первым параметром переда╦тся ассоциативный массив, вторым - объект Smarty. Если вы хотите передавать параметры по одному, как при традиционном обращении с объектами, установите четв╦ртый параметр вызова в false.

Пример 15-1. использование зарегистрированного или присвоенного объекта

<?php
// сам объект

class My_Object() {
    function 
meth1($params, &$smarty_obj) {
        return 
"это мой метод meth1";
    }
}

$myobj = new My_Object;
// регистрируем объект (будет доступен по ссылке)
$smarty->register_object("foobar",$myobj);
// если мы хотим ограничиться определ╦нными методами или свойствами, перечисляем их при регистрации
$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
// если мы хотим использовать традиционный способ передачи параметров объекту, регистрируем объект с соответствующим
// флагом, установленным в false
$smarty->register_object("foobar",$myobj,null,false);

// Так же мы можем присвоить объект. Желательно присваивать объект по ссылке.
$smarty->assign_by_ref("myobj"$myobj);

$smarty->display("index.tpl");
?>

Вот так нужно обращаться к вашим объектам в index.tpl:

{* вызываем зарегистрированный объект *}
{foobar->meth1 p1="foo" p2=$bar}

{* результат можно поместить в переменную *}
{foobar->meth1 p1="foo" p2=$bar assign="output"}
в результате получаем {$output}

{* вызываем присвоенный объект *}
{$myobj->meth1("foo",$bar)}

HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ