mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-04 06:11:37 +01:00 
			
		
		
		
	
		
			
	
	
		
			115 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			115 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| 
								 | 
							
								<?xml version="1.0" encoding="iso-8859-1"?>
							 | 
						|||
| 
								 | 
							
								<!-- $Revision$ -->
							 | 
						|||
| 
								 | 
							
								<sect1 id="advanced.features.objects">
							 | 
						|||
| 
								 | 
							
								 <title>Oggetti</title>
							 | 
						|||
| 
								 | 
							
								 <para>
							 | 
						|||
| 
								 | 
							
								  Smarty consente di accedere agli oggetti PHP attraverso i template. Ci sono
							 | 
						|||
| 
								 | 
							
								     due modi per farlo. Uno <20> registrare gli oggetti al template, quindi accedere
							 | 
						|||
| 
								 | 
							
								     ad essi attraverso una sintassi simile a quella delle funzioni utente. L'altro
							 | 
						|||
| 
								 | 
							
								     modo <20> di assegnare gli oggetti ai template ed accedere loro come ad una
							 | 
						|||
| 
								 | 
							
								     qualsiasi variabile assegnata. Il primo metodo ha una sintassi del template
							 | 
						|||
| 
								 | 
							
								     migliore. E' anche pi<70> sicuro, perch<63> su un oggetto registrato potete impedire
							 | 
						|||
| 
								 | 
							
								     l'accesso a certi metodi o propriet<65>. D'altra parte, su un oggetto registrato
							 | 
						|||
| 
								 | 
							
								     non potete effettuare dei cicli o metterlo in un array di oggetti, ecc.
							 | 
						|||
| 
								 | 
							
								     Il metodo che sceglierete dipender<65> dalle vostre necessit<69>, ma quando possibile
							 | 
						|||
| 
								 | 
							
								     usate sempre il primo metodo, per mantenere la sintassi del template al massimo
							 | 
						|||
| 
								 | 
							
								     della semplicit<69>.
							 | 
						|||
| 
								 | 
							
								 </para>
							 | 
						|||
| 
								 | 
							
									<para>
							 | 
						|||
| 
								 | 
							
								  Se la security <20> abilitata, non <20> possibile accedere a metodi o funzioni private
							 | 
						|||
| 
								 | 
							
								    (che cominciano con "_") dell'oggetto. Quando esistono un metodo e una propriet<65>
							 | 
						|||
| 
								 | 
							
								    con lo stesso nome, verr<72> usato il metodo.
							 | 
						|||
| 
								 | 
							
									</para>
							 | 
						|||
| 
								 | 
							
									<para>
							 | 
						|||
| 
								 | 
							
									Potete impedire l'accesso a certi metodi e propriet<65> elencandoli in un array
							 | 
						|||
| 
								 | 
							
									come terzo parametro di registrazione.
							 | 
						|||
| 
								 | 
							
									</para>
							 | 
						|||
| 
								 | 
							
									<para>
							 | 
						|||
| 
								 | 
							
									Per default, i parametri passati agli oggetti attraverso i template sono
							 | 
						|||
| 
								 | 
							
									passati nello stesso modo in cui li leggono le funzioni utente. Il primo
							 | 
						|||
| 
								 | 
							
									parametro <20> un array associativo, e il secondo <20> l'oggetto smarty. Se
							 | 
						|||
| 
								 | 
							
									volete i parameteri passati uno alla volta per ogni argomento come nel
							 | 
						|||
| 
								 | 
							
									tradizionale passaggio di parametri per gli oggetti, impostate il quarto
							 | 
						|||
| 
								 | 
							
									parametro di registrazione a false.
							 | 
						|||
| 
								 | 
							
									</para>
							 | 
						|||
| 
								 | 
							
									<para>
							 | 
						|||
| 
								 | 
							
									Il quinto parametro opzionale ha effetto soltanto quando
							 | 
						|||
| 
								 | 
							
									<parameter>format</parameter> <20> <literal>true</literal> e
							 | 
						|||
| 
								 | 
							
									contiene una lista di metodi che devono essere trattati come
							 | 
						|||
| 
								 | 
							
									blocchi. Ci<43> significa che questi metodi hanno un tag di
							 | 
						|||
| 
								 | 
							
									chiusura nel template
							 | 
						|||
| 
								 | 
							
									(<literal>{foobar->meth2}...{/foobar->meth2}</literal>) e i
							 | 
						|||
| 
								 | 
							
									parametri passati al metodo hanno la stessa struttura di
							 | 
						|||
| 
								 | 
							
									quelli per le funzioni plugin per i blocchi. Questi metodi
							 | 
						|||
| 
								 | 
							
								        quindi ricevono 4 parametri <parameter>$params</parameter>,
							 | 
						|||
| 
								 | 
							
									<parameter>$content</parameter>, <parameter>&$smarty</parameter> 
							 | 
						|||
| 
								 | 
							
								        e <parameter>&$repeat</parameter> e si comportano come 
							 | 
						|||
| 
								 | 
							
								        funzioni plugin per i blocchi.
							 | 
						|||
| 
								 | 
							
									</para>
							 | 
						|||
| 
								 | 
							
								 <example>
							 | 
						|||
| 
								 | 
							
								  <title>usare un oggetto registrato o assegnato</title>
							 | 
						|||
| 
								 | 
							
								  <programlisting role="php">
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								// the object
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class My_Object {
							 | 
						|||
| 
								 | 
							
									function meth1($params, &$smarty_obj) {
							 | 
						|||
| 
								 | 
							
										return "this is my meth1";
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$myobj = new My_Object;
							 | 
						|||
| 
								 | 
							
								// registriamo l'oggetto (sar<61> usato per riferimento)
							 | 
						|||
| 
								 | 
							
								$smarty->register_object("foobar",$myobj);
							 | 
						|||
| 
								 | 
							
								// se vogliamo impedire l'accesso a metodi o propriet<65>, elenchiamoli
							 | 
						|||
| 
								 | 
							
								$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
							 | 
						|||
| 
								 | 
							
								// se vogliamo usare il formato tradizionale per i parametri, passiamo un false
							 | 
						|||
| 
								 | 
							
								$smarty->register_object("foobar",$myobj,null,false);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// Possiamo anche assegnare gli oggetti. Facciamolo per riferimento quando possibile.
							 | 
						|||
| 
								 | 
							
								$smarty->assign_by_ref("myobj", $myobj);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$smarty->display("index.tpl");
							 | 
						|||
| 
								 | 
							
								?>
							 | 
						|||
| 
								 | 
							
								+]]>
							 | 
						|||
| 
								 | 
							
								  </programlisting>
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								   Ed ecco come accedere all'oggetto in index.tpl:
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								  <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								{* accediamo all'oggetto registrato *}
							 | 
						|||
| 
								 | 
							
								{foobar->meth1 p1="foo" p2=$bar}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{* possiamo anche assegnare l'output *}
							 | 
						|||
| 
								 | 
							
								{foobar->meth1 p1="foo" p2=$bar assign="output"}
							 | 
						|||
| 
								 | 
							
								the output was {$output}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{* accediamo all'oggetto assegnato *}
							 | 
						|||
| 
								 | 
							
								{$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
							 | 
						|||
| 
								 | 
							
								-->
							 |