Files
smarty/docs/fr/programmers/advanced-features/advanced-features-objects.xml
2004-04-13 11:47:32 +00:00

95 lines
3.3 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<sect1 id="advanced.features.objects">
<title>Objets</title>
<para>
Smarty donne l'accès aux objets PHP a travers les templates. Il y
a 2 moyens d'y avoir accès. Le premier consiste a allouer les objets
au template puis de les utiliser avec une syntaxe similaire a celles
des fonctions personnalisées. Le deuxième moyen consiste a allouer
des objets aux templates et de les utiliser comme n'importe quelle
variable. La première méthode a une syntaxe beaucoup plus sympathique.
Elle est aussi plus sécurisée, puisqu'un objet alloué ne peut avoir accès
qu'a certaines méthodes et propriétés. Néanmoins, un objet alloué
ne peut pas avoir de lien sur lui-même ou être mis dans un tableau
d'objet, etc. Vous devez choisir la méthode qui correspond a vos
besoins, mais tGchez d'utiliser la première méthode autant que possible
afin de réduire la syntaxe des templates au minimum.
</para>
<para>
Si l'option de sécurité est activée, aucune méthode ou fonctions privées
n'est accessible (commentant par "_"). S'il existe une méthode et une
propriété du même nom, c'est la méthode qui sera utilisée.
</para>
<para>
Vous pouvez restreindre l'accès aux méthodes et aux propriétés en
les listant dans un tableau en tant que troisième paramètre
d'allocation.
</para>
<para>
Par défaut, les paramètres passés aux objets depuis le templates le sont de la
même faton que les fonctions utilisateurs les récupèrent.
Le premier paramètre correspond a un tableau associatif, le second a l'objet
Smarty. Si vous souhaitez que les paramètres soient passées un a un, comme
dans un appel traditionnel, définissez registration, quatrième paramètre optionnel,
a false.
</para>
<example>
<title>utilisation d'un objet alloué ou assigné</title>
<programlisting>
&lt;?php
// la classe
class My_Object() {
function meth1($params, &amp;$smarty_obj) {
return "this is my meth1";
}
}
$myobj = new My_Object;
// enregistre l'objet
$smarty->register_object("foobar",$myobj);
// on restreint l'accès a certaines méthodes et propriétés en les listant
$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
// pour utiliser le format habituel de paramètre objet, passez le booléen = false
$smarty->register_object("foobar",$myobj,null,false);
// on peut aussi assigner des objets. Assignez par référence quand c'est possible
$smarty->assign_by_ref("myobj", $myobj);
$smarty->display("index.tpl");
?&gt;
TEMPLATE:
{* accès a notre objet enregistré *}
{foobar->meth1 p1="foo" p2=$bar}
{* on peut aussi assigner la sortie *}
{foobar->meth1 p1="foo" p2=$bar assign="output"}
the output was {$output)
{* access our assigned object *}
{$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
-->