mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 04: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 | |||
|  | --> |