Exception lors de la ReflectionFunction de sandbox.php | Spip 3.0.17
La MAJ de la 3.0.16 vers la 3.0.17 a cassé un certains nombres de filtres sur mes projets ( en développement ).
En effet, les modifications apportés sont les suivantes :
3.0.16 elseif ($f = chercher_filtre($fonc)) { $code = "$f($code$arglist)"; }
Devient
3.0.17 elseif ($f = chercher_filtre($fonc)) { // cas particulier : le filtre |set doit acceder a la $Pile // proto: filtre_set(&$Pile, $val, $args...) $refl = new ReflectionFunction($f); $refs = $refl->getParameters(); if (isset($refs[0]) AND $refs[0]->name == 'Pile') { $code = "$f(\$Pile,$code$arglist)"; } else { $code = "$f($code$arglist)"; } }
Or, il arrive dans mon cas, d'utiliser des méthodes statiques d'objets en guise de filtre, ex :
[(#REM|MaClass::MaMethodStatic)]
Dans ce cas là, j'obtiens une fatale de ce type :
Fatal error: Uncaught exception 'ReflectionException' with message 'Function MaClass::MaMethod() does not exist'
Normal, puisque ce n'est pas une fonction mais une méthode, il faudrait employer
$refl = new ReflectionMethod($f);
J'ai un correctif qui vaut ce qu'il vaut pour l'instant, pour que je puisse continuer à bosser sur mon projet, je vous le publie à la demande.