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. Fonctionnalités avancées

Objets

Smarty donne l'accès aux objets PHP à travers les templates. Il y a 2 moyens d'y avoir accès.

  • Le premier consiste à allouer les objets au template puis de les utiliser avec une syntaxe similaire a celles des fonctions personnalisées.

  • Le deuxième moyen consiste à assigner 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 template le sont de la même façon que les fonctions utilisateurs les récupèrent. Le premier paramètre correspond à un tableau associatif, le second à l'objet Smarty. Si vous souhaitez que les paramètres soient passés un à un, comme dans un appel traditionnel, définissez registration, quatrième paramètre optionnel, à FALSE.

Le cinquième paramètre optionnel n'a d'effet que si le paramètre format vaut true et il contient une liste de méthodes qui doivent être traitées comme des blocks. Celà signifie que ces méthodes ont un tag fermant dans le template ({foobar->meth2}...{/foobar->meth2}) et que les paramètres de ces méthodes fonctionnent de la même façon que les paramètres des blocks de fonctions des plugins : Ils contiennent 4 paramètres $params, $content, &$smarty et &$repeat et ils fonctionnent de la même façon que les blocks de fonctions des plugins.

Example 15.1. Utilisation d'un objet alloué ou assigné


<?php
// la classe

class My_Object() {
  function meth1($params, &$smarty_obj) {
    return 'Ceci est ma methode 1';
  }
}

$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');
?>

?>

  

Et voici comment accéder à vos objets dans index.tpl :


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

  

Voir aussi register_object() et assign().

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors