Get Smarty

Donate

Donate Bitcoin Bitcoin
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

Check reviews of PHP Web Hosting, compatible with Smarty Templates

Largest classified with thousands of ads at Shoppok

Buy cheap eyeglasses from Cheapglasses123.com and save up to 80%.

Buy wedding dresses on SiteSteer.com - Best Online Wedding Dress Store

Candy Crush Cheats

Tired of playing games? Visit the Game Supply to Sell World of Warcraft Accounts.

Buy prescription glasses from www.australiaglasses.com and save.

Cheap Glasses Now On Sale at GlassesPeople.com. Starts At $7.95.

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

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.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 5 plus 17? (Are you human?)

Sponsors [info]

UK Web Hosting @webhost.uk.net
Best Web Hosting @rshosting.com
Web Hosting UK @webhostinguk.com
Unlimited Web Hosting @infrenion.com
App Entwicklung @morphodo.com
Buy from China @dhgate.com
dissertationteam.com
Buy Web Hosting @buy-hosting.net
WordPress Hosting Hub @wphostinghub.net