Problème avec la fonction call_user_func_array() et php 5.3.

Eléphanteau du PHP | 40 Messages

18 oct. 2012, 10:59

Bonjour

Cette ligne :

Code : Tout sélectionner

$ret = call_user_func_array( array( &$pluginClassInstance, $method ), $args );
fonctionne sous php-5.2.6 mais pas sous 5.3.2 ($ret = undefined et la methode n'est pas appelée), avec rigoureusement les mêmes paramètres.

Cette ligne faisant partie d'une librairie, je ne dois pas la modifier mais plutôt chercher dans les options de PHP ce qui permettrait de la faire fonctionner.
J'ai compilé moi même les différentes versions de PHP que j'utilise (phpFarm), et je me demande si certaines options par défaut n'ont pas changé de 5.2.6 à 5.3.2

ViPHP
ViPHP | 2577 Messages

18 oct. 2012, 11:35

J'ai une hyphothèse, c'est que $args est un tableau vide.
Donc la méthode n'est pas utilisée et la variable $ret n'est pas initialisée.

Si ce n'est qu'un message de d'info, tu peux jouer sur error_reporting()

Pour ce qui est des modifications :
[Depuis 5.3] L'interprétation des mots-clés du modèle objet comme parent et self a changé. Avant, les appeler avec la syntaxe à double deux-points envoyait une erreur E_STRICT à cause de l'interprétation statique.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 oct. 2012, 20:17

($ret = undefined et la methode n'est pas appelée)
je dirais plutot $ret n'est pas définie car call_user_func_array() se vautre ?

Et au pif je dirais suppression du passage par référence (enfin il est devenu par défaut) test sans le & ;)


@+
Il en faut peu pour être heureux ......