Get Smarty

Donate

Paypal

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

Advertisement

Chapter 15. Funzioni avanzate

Oggetti

Smarty consente di accedere agli oggetti PHP attraverso i template. Ci sono due modi per farlo. Uno è registrare gli oggetti al template, quindi accedere ad essi attraverso una sintassi simile a quella delle funzioni utente. L'altro modo è 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ù sicuro, perché su un oggetto registrato potete impedire l'accesso a certi metodi o proprietà. 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à dalle vostre necessità, ma quando possibile usate sempre il primo metodo, per mantenere la sintassi del template al massimo della semplicità.

Se la security è abilitata, non è possibile accedere a metodi o funzioni private (che cominciano con "_") dell'oggetto. Quando esistono un metodo e una proprietà con lo stesso nome, verrà usato il metodo.

Potete impedire l'accesso a certi metodi e proprietà elencandoli in un array come terzo parametro di registrazione.

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 è un array associativo, e il secondo è 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.

Il quinto parametro opzionale ha effetto soltanto quando format è true e contiene una lista di metodi che devono essere trattati come blocchi. Ciò significa che questi metodi hanno un tag di chiusura nel template ({foobar->meth2}...{/foobar->meth2}) 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 $params, $content, &$smarty e &$repeat e si comportano come funzioni plugin per i blocchi.

Example 15.1. usare un oggetto registrato o assegnato


<?php
// the object

class My_Object {
	function meth1($params, &$smarty_obj) {
		return "this is my meth1";
	}
}

$myobj = new My_Object;
// registriamo l'oggetto (sarà usato per riferimento)
$smarty->register_object("foobar",$myobj);
// se vogliamo impedire l'accesso a metodi o proprietà, 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");
?>
+
  

Ed ecco come accedere all'oggetto in index.tpl:


{* 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)}

  

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors