mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-30 11:51:41 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="windows-1251"?>
 | ||
| <!-- $Revision$ -->
 | ||
| <!-- EN-Revision: 1.1 Maintainer: tony2001 Status: ready -->
 | ||
| <sect1 id="advanced.features.objects">
 | ||
|  <title>Объекты</title>
 | ||
|  <para>
 | ||
|   Смарти позволяет использовать в шаблонах объекты PHP. 
 | ||
|   Существуют два способа их вызова. Первый - зарегистрировать объект для 
 | ||
|   шаблона, затем вызвать его примерно так же, как и пользовательскую
 | ||
|   функцию. Второй - объявить объект для шаблона и использовать его, 
 | ||
|   как любую другую объявленную переменную. Первый метод гораздо аккуратнее 
 | ||
|   и безопаснее, так как у зарегистрированного объекта можно ограничить 
 | ||
|   свойства и методы. Но, в тоже время, зарегистрированный объект
 | ||
|   нельзя использовать в циклах, нельзя помещать в массив объектов 
 | ||
|   и так далее. Выбор способа за вами, но используйте по 
 | ||
|   возможности первый, чтобы максимально упростить синтаксис шаблона.  
 | ||
|  </para>
 | ||
| 	<para>
 | ||
|   В безопасном режиме недоступны приватные методы и 
 | ||
|   функции (имена которых начинаются с "_").
 | ||
|   Если существует и метод, и свойство с одинаковыми именами, 
 | ||
|   то будет использован метод.
 | ||
| 	</para>
 | ||
| 	<para>
 | ||
|   Вы можете ограничить использование объекта только некоторыми 
 | ||
|   методами и свойствами. Для этого перечислите их в массиве и укажите
 | ||
|   этот массив третьим параметром при регистрации объекта. 
 | ||
| 	</para>
 | ||
| 	<para>
 | ||
|   По умолчанию, параметры из шаблона передаются объекту точно так же, 
 | ||
|   как и пользовательской функции. Первым параметром передаётся 
 | ||
|   ассоциативный массив, вторым - объект Smarty. Если вы хотите передавать 
 | ||
|   параметры по одному, как при традиционном обращении с объектами, установите
 | ||
| 	 четвёртый параметр вызова в false.
 | ||
| 	</para>
 | ||
|  <example>
 | ||
|   <title>использование зарегистрированного или объявленного объекта</title>
 | ||
|   <programlisting role="php">
 | ||
| <![CDATA[
 | ||
| <?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");
 | ||
| ?>
 | ||
| 
 | ||
| ШАБЛОН:
 | ||
| 
 | ||
| {* вызываем зарегистрированный объект *}
 | ||
| {foobar->meth1 p1="foo" p2=$bar}
 | ||
| 
 | ||
| {* результат можно перегрузить в переменную *}
 | ||
| {foobar->meth1 p1="foo" p2=$bar assign="output"}
 | ||
| в результате получаем {$output}
 | ||
| 
 | ||
| {* вызываем объявленный объект *}
 | ||
| {$myobj->meth1("foo",$bar)}
 | ||
| ]]>
 | ||
|   </programlisting>
 | ||
|  </example>
 | ||
| </sect1>
 | ||
| <!-- Keep this comment at the end of the file
 | ||
| Local variables:
 | ||
| mode: sgml
 | ||
| sgml-omittag:t
 | ||
| sgml-shorttag:t
 | ||
| sgml-minimize-attributes:nil
 | ||
| sgml-always-quote-attributes:t
 | ||
| sgml-indent-step:1
 | ||
| sgml-indent-data:t
 | ||
| indent-tabs-mode:nil
 | ||
| sgml-parent-document:nil
 | ||
| sgml-default-dtd-file:"../../../../manual.ced"
 | ||
| sgml-exposed-tags:nil
 | ||
| sgml-local-catalogs:nil
 | ||
| sgml-local-ecat-files:nil
 | ||
| End:
 | ||
| vim600: syn=xml fen fdm=syntax fdl=2 si
 | ||
| vim: et tw=78 syn=sgml
 | ||
| vi: ts=1 sw=1
 | ||
| -->
 |