CALL_USER_METHOD |
Appel une méthode utilisateur |
PHP 3.0.3 à 4.1 ou 5.0 à 5.3 |
Syntaxe
function call_user_method($method_name,$obj);
|
function call_user_method($method_name,$obj,$parameter);
|
function call_user_method($method_name,$obj,$parameter,...);
|
Paramètres
Nom |
Description |
$method_name |
Ce paramètre permet d'indiquer la méthode à appeler. |
$obj |
Ce paramètre permet d'indiquer le contexte de l'objet de la méthode. |
$parameter |
Ce paramètre permet d'indiquer les paramètres à utiliser pour l'appel de la méthode. |
Retour
Valeur |
Description |
FALSE |
Cette valeur permet d'indiquer que l'appel de la méthode n'a pas réussi. |
variable |
Ces valeurs permettent d'indiquer le résultat de la fonction. |
Description
Cette fonction permet d'effectuer l'appel d'une méthode définit par l'utilisateur.
Remarques
- Fonction obsolète : La fonction call_user_method a été déclarée obsolète à partir de PHP 5.3.0 et a été supprimée dans PHP 7.0.0. Elle a été remplacée par
call_user_func_array et call_user_func. Cela signifie qu'il est fortement déconseillé de l'utiliser dans les versions modernes
de PHP, car elle n'est plus supportée.
- But initial : À l'origine, call_user_method était utilisée pour appeler une méthode d'un objet de manière dynamique. Le premier paramètre était l'objet, et
le deuxième était le nom de la méthode à appeler. Cette approche permettait de faire des appels de méthodes sur des objets de manière flexible, mais les alternatives modernes
sont plus sécurisées.
- Limitations dans la gestion des paramètres : call_user_method ne permettait de passer que des paramètres supplémentaires à la méthode sous forme d'une liste.
Cela limitait la flexibilité dans les cas où une méthode avait un nombre variable de paramètres. La fonction call_user_func_array a été introduite pour résoudre cette
limitation.
- Sécurité : Comme avec d'autres fonctions effectuant des appels dynamiques de méthodes ou de fonctions, l'utilisation de call_user_method peut introduire des
problèmes de sécurité si elle est mal utilisée. Si les noms de méthodes ou les objets sont basés sur des entrées non fiables, cela pourrait permettre des attaques de type
injection ou de manipulation de méthodes non intentionnelles.
- Gestion des erreurs : Si la méthode spécifiée par call_user_method n'existe pas ou n'est pas accessible pour l'objet donné, la fonction générait une
erreur de type "undefined method". Cette gestion d'erreur peut être problématique si le développeur n'avait pas prévu un contrôle des erreurs approprié dans son code.
- Interopérabilité avec les interfaces : call_user_method pouvait être utilisée pour appeler des méthodes d'objets implémentant une interface. Cependant,
cela pouvait poser des problèmes si la méthode n'était pas définie dans l'interface ou si l'objet ne correspondait pas à l'interface attendue, ce qui rendait la fonction moins
fiable dans des contextes complexes.
- Impact sur la performance : Comme beaucoup de fonctions de rappel dans PHP, call_user_method ajoutait une surcharge en raison de son appel dynamique.
Bien que la surcharge ne soit pas énorme, dans des applications à grande échelle avec de nombreux appels à cette fonction, cela pouvait légèrement affecter les performances du
programme.
- Substitution par des solutions modernes : Avec l'avènement de call_user_func_array et des améliorations de PHP dans les versions récentes,
call_user_method n'est plus nécessaire. Ces nouvelles fonctions offrent une manière plus flexible, plus sûre et plus performante de faire des appels dynamiques de méthodes
avec des paramètres variés. L'utilisation de ces fonctions modernes est désormais la meilleure pratique.
Dernière mise à jour : Mercredi, le 25 mars 2015