Je réponds exceptionnellement à cette question parce que vous devez utiliser une méthode de classe. Ce n'est donc pas si simple que le million de réponses sur le sujet.
Une façon de le faire, changer le modèle d'une manière toute correspondance est le paramètre yourclass::module
et passer un tableau avec $this
et le nom de procédé en tant que second paramètre:
$this->template = preg_replace_callback('/#module=\K\w+(?=#)/i', array($this, module), $this->template);
ou
$this->template = preg_replace_callback('/#module=\K\w+(?=#)/i', 'self::module', $this->template);
Autre façon, garder le même modèle et utiliser l'astuce $that=$this;
:
$that = $this;
$this->template = preg_replace_callback('/#module=(\w+)#/i', function ($m) use ($that) {
return $that->module($m[1]);
}, $this->template);
un rappel est une fonction, dont les paramètres et les valeurs de retour doivent être soigneusement choisis en ce qui concerne http://php.net/manual/fr/function.preg-replace-callback.php – Calimero
Je vais rouvrir la question car c'est un cas particulier dans lequel une méthode de classe doit être utilisée la fonction de rappel. –