Comment detruire une fonction PHP ou la remplacer par l'existante ?

Avatar du membre
Mammouth du PHP | 1564 Messages

25 févr. 2021, 01:17

Salut,

En schématisant, dans une page:

1. En haut de cette page j'inclus un fichier qui contient une fonction qui se nomme bonjour() qui retourne "Bonjour!"

2. Au milieu de la page j'ai une fonction qui se nomme aussi bonjour() mais qui elle me retourne le mot "Salut!"

3. En bas de page, nous avons donc une fonction bonjour() qui retourne "Bonjour!" car la fonction du milieu de page à été vérifiée avec function_exists et n'est donc pas utilisée.


Je souhaiterais pouvoir "remplacer" la première fonction par la seconde et ainsi affiche "Salut!" et non "Bonjour!".

Une solution ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 févr. 2021, 11:54

Alors la réponse simple est que non ce n'est pas prévu par PHP.
Il a existé il y a quelques années une fonction override_function() mais elle a disparu.

Une possibilité si tu as la possibilité de changer la façon dont sont définis tes fonctions est d'utiliser des fonctions anonymes, ainsi tu peux les redéfinir comme tu veux (et même faire un unset() pour les supprimer)
$ihatefooexamples = function() {
  echo "boo-foo ! <hr>";
}
$ihatefooexamples();



$ihatefooexamples = function() {
   echo "really boo-foo <hr>";
}
$ihatefooexamples();
https://www.php.net/manual/fr/functions.anonymous.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1564 Messages

25 févr. 2021, 12:04

Merci, donc pas possible.

Je suis tombé sur les fonctions anonymes hier sur la doc PHP, merci pour l'info ;)