Ce que je veux faire, c'est ça :
{myfunc myattribute=new MyClass('arg1', 'arg2')}
Mais j'obtiens une erreur lorsque j'essaie, disant que la fonction MyClass n'est pas définie.
La solution de rechange que j'ai utilisée consiste à créer une fonction de premier niveau comme celle-ci :
function MyClass($arg1, $arg2) { return new MyClass($arg1, $arg2); }
Puis dans le modèle faire :
{myfunc myattribute=MyClass('arg1', 'arg2')}
Mais existe-t-il un moyen d'éviter de créer une nouvelle fonction de haut niveau pour chaque classe que je veux rendre contrastée à partir de Smarty ?
Je suppose que je pourrais aussi créer une fonction qui prendrait simplement le nom d'une classe pour me permettre de construire n'importe quelle classe, mais c'est une solution plutôt moche.
Éditer : Pour tous ceux qui m'accusent de violer les meilleures pratiques, peut-être que ceci vous fera vous sentir mieux :
L'objet que je construis est un widget pour rendre du html. Le code actuel ressemble à ceci :
{render_widget widget=new MyWidget() id="myid" name="myname"}
De plus, je suis malheureusement bloqué sur PHP 5.2, et je ne peux donc pas utiliser les fermetures. Je peux utiliser la dernière version de Smarty3, bien que j'utilise actuellement une version de Smarty 3.0.