mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-22 17:01: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 è 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à.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
Potete impedire l'accesso a certi metodi e proprietà 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 è 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.
|
|
</para>
|
|
<para>
|
|
Il quinto parametro opzionale ha effetto soltanto quando
|
|
<parameter>format</parameter> è <literal>true</literal> e
|
|
contiene una lista di metodi che devono essere trattati come
|
|
blocchi. Ciò 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à 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");
|
|
?>
|
|
+]]>
|
|
</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
|
|
-->
|