En réponse à une autre question sur les expressions régulières, on m'a demandé d'utiliser la fonction preg_replace_callback
(PHP regex templating - find all occurrences of {{var}}) comme solution à mon problème. Cela fonctionne très bien, mais maintenant j'ai une question relative à la portée variable dans les fonctions de rappel.Portée variable pour les fonctions de rappel PHP
La fonction qui analyse le texte fait partie d'une classe, mais les données que je souhaite utiliser sont stockées localement dans la fonction. Cependant, j'ai constaté que je ne peux pas accéder à ces données à l'intérieur de ma fonction de rappel. Voici les moyens que je l'ai essayé jusqu'à présent:
- Mettre en oeuvre le rappel en fonction de la classe privée, en passant
'$this->callback_function'
comme paramètre de rappel (ne fonctionne pas, php a une erreur fatale) - Mettre en oeuvre le rappel à l'intérieur de la fonction qui l'utilise (voir exemple ci-dessous), mais cela ne fonctionne pas, soit parce que
$newData
n'est pas portée à l'intérieurcallback_function
des idées quant à la façon dont je peux accéder à $newData
dans ma fonction de rappel, de préférence sans utiliser globals ?
Merci beaucoup.
Exemple ci-dessous pour la deuxième tentative (ne formate pas correctement lorsque je l'ai mis après le point de balle)
public function parseText($newData) {
...
function callback_function($matches) {
... //something that uses $newData here
}
...
preg_replace_callback('...', 'callback_function', $textToReplace);
}
Hey, merci, c'est exactement ce que je recherchais. –