mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-30 20:01:37 +01:00 
			
		
		
		
	
		
			
	
	
		
			118 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			118 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
|   | <?xml version="1.0" encoding="iso-8859-1"?> | |||
|  | <!-- $Revision$ --> | |||
|  |    <sect1 id="advanced.features.objects"> | |||
|  |     <title>Objetos</title> | |||
|  |     <para> | |||
|  |       El Smarty permite acceso a objetos de PHP a trav<61>s de sus templates. | |||
|  |   Hay dos formas de accesarlos. Una forma es registrando objetos para el  | |||
|  |   template, entonces acceselos mediante sintaxis similar a las funciones | |||
|  |   habituales. La otra es asignar objetos al template y accesarlos como si  | |||
|  |   fueran una variable asignada. El primer m<>todo tiene una sintaxis de  | |||
|  |   template mucho mas agradable. Y tambi<62>n mas segura, a medida que un  | |||
|  |   objeto registrado puede ser reescrito a ciertos m<>todos y propiedades. | |||
|  |   Sin embargo tanto, un objeto registrado no puede ser puesto en loop o  | |||
|  |   ser asignado en arreglos de objetos, etc. El m<>todo que usted escoja  | |||
|  |   sera determinado por sus necesidades, pero utilice el primero m<>todo si  | |||
|  |   es posible para mantener un minimo de sintaxis en el template. | |||
|  |     </para> | |||
|  | 	<para> | |||
|  |     Si la seguridad esta habilitada, ninguno de los dos m<>todos privados o | |||
|  |   funciones pueden ser accesados (comenzando con "_"). Si un metodo y  | |||
|  |   propiedades de un mismo nombre existe, el m<>todo ser<65> usado. | |||
|  | 	</para> | |||
|  | 	<para> | |||
|  |   Usted puede restringir los m<>todos y propiedades que pueden ser accesados  | |||
|  |   listandolos en un arreglo como el tercer par<61>metro de registro. | |||
|  | 	</para> | |||
|  | 	<para> | |||
|  |   Por default, los par<61>metros pasados a los objetos a a trav<61>s de los  | |||
|  |   templates son pasados de la misma forma en que las funciones de  | |||
|  |   costumbre los obtienen. Un arreglo asociativo es pasado como el primer  | |||
|  |   par<61>metro, y el objeto smarty como el segundo. Si usted quiere que los  | |||
|  |   par<61>metros pasados uno de cada vez por cada argumento pasen como  | |||
|  |   par<61>metros de un objeto tradicional, defina el cuarto par<61>metro de  | |||
|  |   registro en falso. | |||
|  | 	</para> | |||
|  | 	<para> | |||
|  |   El quinto par<61>metro opcional solo tiene efecto con | |||
|  |   <parameter>format</parameter> siendo <literal>true</literal> | |||
|  |   y conteniendo una lista de m<>todos de ob que seran tratados  | |||
|  |   como bloques. Esto significa que estos m<>todos tienen una  | |||
|  |   etiqueta de cierre en el template  | |||
|  |   (<literal>{foobar->meth2}...{/foobar->meth2}</literal>) y | |||
|  |   los par<61>metros para los m<>todos tienen la misma sinopsis como  | |||
|  |   los par<61>metros de block-function-plugins: Ellos reciben 4  | |||
|  |   par<61>metros <parameter>$params</parameter>, | |||
|  |   <parameter>$content</parameter>,<parameter>&$smarty</parameter> | |||
|  |   y <parameter>&$repeat</parameter> tambi<62>n se comportan como | |||
|  |   block-function-plugins. | |||
|  | 	</para> | |||
|  |     <example> | |||
|  |      <title>usando un objeto registrado o atribuido</title> | |||
|  | <programlisting role="php"> | |||
|  | <![CDATA[ | |||
|  | <?php | |||
|  | // El objeto | |||
|  | 
 | |||
|  | class My_Object { | |||
|  | 	function meth1($params, &$smarty_obj) { | |||
|  | 		return "this is my meth1"; | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | $myobj = new My_Object; | |||
|  | 
 | |||
|  | // registrando el objeto (ser<65> por referencia) | |||
|  | $smarty->register_object("foobar",$myobj); | |||
|  | 
 | |||
|  | // Si usted quiere restringir acceso a ciertos metodos o propriedades, | |||
|  | // listelos | |||
|  | $smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1')); | |||
|  | 
 | |||
|  | // Si usted quiere usar el formato de parámetro del objeto tradicional, | |||
|  | // pase un booleano en false | |||
|  | $smarty->register_object("foobar",$myobj,null,false); | |||
|  | 
 | |||
|  | // también puede asignar ojetos. Posible cuando se asignan por | |||
|  | // referencia. | |||
|  | $smarty->assign_by_ref("myobj", $myobj); | |||
|  | 
 | |||
|  | $smarty->display("index.tpl"); | |||
|  | ?> | |||
|  | 
 | |||
|  | TEMPLATE: | |||
|  | 
 | |||
|  | {* accesando a nuestro objeto registrado *} | |||
|  | {foobar->meth1 p1="foo" p2=$bar} | |||
|  | 
 | |||
|  | {* usted tambi<62>n puede asignar la salida *} | |||
|  | {foobar->meth1 p1="foo" p2=$bar assign="output"} | |||
|  | the output was {$output} | |||
|  | 
 | |||
|  | {* accesando a nuestro objeto asignado *} | |||
|  | {$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 | |||
|  | --> |