Get Smarty

Donate

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Buy cheap glasses from Cheapglasses123.com and save up to 80%.

Where to buy prescription glasses? EyewearCanada.com is your best choice!

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

Shop for 2018 World Cup Football Boots Online sale at guthjcc.com

Browse best 2018 world cup soccer cleats and shoes from SoccerAzteca.com

Advertisement

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

Объекты

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

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

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

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

Необязательный пятый параметр вступает в силу только в том случае, если свойство format равно true. Он содержит список методов, которые должны обрабатываться как блоки. Это означает, что в шаблоне у методы будут иметь закрывающие тэги ({foobar->meth2}...{/foobar->meth2}) и параметры методов будут иметь такие же синопсисы, как и параметры для block-function-plugins: $params, $content, &$smarty и &$repeat. Кроме того, они ведут себя так же, как и block-function-plugins.

Example 15.1. использование зарегистрированного или присвоенного объекта


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

class My_Object {
	function meth1($params, &$smarty_obj) {
		return 'this is my 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'}
the output was {$output}

{* обращаемся к нашему назначенному объекту *}
{$myobj->meth1('foo',$bar)}

  

См. также register_object() и assign()

Comments
No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 19 plus 6? (Are you human?)

Advertisement