La question de redéfinir une classe ou ses méthodes sans utiliser l'héritage a intrigué de nombreux développeurs. L'exemple fourni illustre un scénario dans lequel une mise à jour d'une bibliothèque tierce introduit une fonction boguée (buggy_function), ce qui nécessite de la modifier tout en évitant les modifications directes de la bibliothèque.
Monkey patching est la technique employés pour y parvenir. Cependant, PHP ne prend pas en charge nativement les correctifs singe.
La bibliothèque runkite peut être utilisée pour ajouter des fonctionnalités de correctif singe à PHP. Il fournit la fonction runkit_method_redefine, qui vous permet de redéfinir le comportement d'une fonction spécifique au sein d'une classe.
Voici comment vous pouvez utiliser runkit_method_redefine pour remplacer la fonction buggy_function :
runkit_method_redefine('third_party_library', 'buggy_function', '', 'return \'good result\'');
Cela redéfinira la méthode buggy_function pour renvoyer un « bon résultat » au lieu du « mauvais résultat » d'origine. Il est important de noter que vous devez fournir le corps de la fonction sous forme de chaîne.
Bien que le patch singe puisse être une technique utile, il doit être utilisé avec prudence en raison des pièges potentiels liés à l'évaluation et au débogage des chaînes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!