mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-23 01:11:36 +02: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
|
|||
|
-->
|