Objets 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. 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. 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. 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. utilisation d'un objet alloué ou assigné <?php // la classe class My_Object() { function meth1($params, &$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"); ?> 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)}