Expressions régulières - Parser du template HTML

ViPHP
ViPHP | 4039 Messages

12 avr. 2010, 11:32

Déjà utiliser les double deux points :: plutôt que ->.
Ensuite le fait de faire référence au nom de la classe plutôt qu'à l'objet : logiquement, on aurait du faire this->traiteresult.

Quelque chose m'échappe ?
C'est ce qu'on appèle un appel statique (on peut ainsi appeler des fonctions sans devoir instancier l'objet, bien pratique des fois):
http://www.manuelphp.com/php/language.oop5.static.php
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 5462 Messages

12 avr. 2010, 11:33

Je le sais parfaitement, mais je trouve la pratique à déconseiller: c'est moins clair, et on se demande toujours s'il faut ou non les échapper.
Il faudrait penser à utiliser un délimiteur correct dans tes expressions.
faudrait savoir... :shock:

ViPHP
ViPHP | 5462 Messages

12 avr. 2010, 11:39

Ensuite le fait de faire référence au nom de la classe plutôt qu'à l'objet : logiquement, on aurait du faire this->traiteresult.
si tu veux utiliser $this c'est :
preg_replace_callback("/!%!(\w+)!!%/", array($this, 'traiteresult'), $texte);

Petit nouveau ! | 8 Messages

12 avr. 2010, 11:47

Yes ça fonctionne :

Code : Tout sélectionner

<?php $texte='Je suis !%!CONTENU!!% trzès content !%!HEADER!!% et puis !%!MENU!!%'; class test { protected $nb=0; public function __construct($texte) { preg_replace_callback("/!%!(\w+)!!%/",array($this, 'traiteresult'),$texte); } public function traiteresult($solutions) { switch($solutions[1]) { case('CONTENU'):echo'ici le contenu de la page';break; case('MENU'):echo'accueil - histoire - contact';break; default:echo"je ne connais pas cette fonction";break; } $this->nb++; } public function getNb() { return $this->nb; } } $allez = new test($texte); echo $allez->getNb(); ?>
Là je me lance dans l'intégration des méthodes à mon contrôleur principal.
Je dois me remettre un peu dedans.
Je connaissais pas les méthodes statiques, donc je vais potasser un peu tout ça, voir si ça pourrait pas me servir.

Petit nouveau ! | 8 Messages

12 avr. 2010, 16:27

Bon tout s'est très bien passé pour l'intégration.

J'aurais de l'optimisation à faire plus tard, mais déjà, ça fonctionne, et bien !

Je suis très content, maintenant je passe à la suite ! ;)

Merci!