Note to users: language constructs (eval, die, exit, isset, unset, echo etc.) which might be confused with functions, cannot be renamed or redefined even with runkit.internal_override.
(PECL runkit >= 0.7.0)
runkit_function_redefine — Remplace une définition de fonction avec une nouvelle implémentation
$funcname
, string $arglist
, string $code
[, bool $return_by_reference
= NULL
[, string $doc_comment
= NULL
]] ) : bool$funcname
, Closure $closure
[, string $doc_comment
= NULL
] ) : boolNote: Par défaut, seulement les fonctions définies par l'utilisateur peuvent être supprimées, renommées ou modifiées. Afin de surcharger des fonctions internes, vous devez activer la configuration
runkit.internal_override
dans le fichier php.ini du système entier.
funcname
Nom de la fonction à redéfinir
arglist
Nouvelle liste d'arguments à être acceptés par la fonction
code
Nouvelle implémentation du code
closure
Une closure qui définit la fonction.
return_by_reference
Si la fonction devrait retourner par référence.
doc_comment
Le commentaire de documentation de la fonction.
Cette fonction retourne TRUE
en cas de succès ou FALSE
si une erreur survient.
Version | Description |
---|---|
runkit 1.0.4 |
Une syntaxe alternative s'attendant a une closure a été ajouté.
|
runkit 1.0.4 |
Les paramètres optionels return_by_reference et
doc_comment ont été ajouté.
|
Exemple #1 Exemple avec runkit_function_redefine()
<?php
function testme() {
echo "Implémentation de Testme originale\n";
}
testme();
runkit_function_redefine('testme','','echo "Nouvelle implémentation de Testme\n";');
testme();
?>
L'exemple ci-dessus va afficher :
Implémentation de Testme originale Nouvelle implémentation de Testme
Note to users: language constructs (eval, die, exit, isset, unset, echo etc.) which might be confused with functions, cannot be renamed or redefined even with runkit.internal_override.
Here is another example with a parameter:
<?php
function hello_world($word) {
echo "Original Hello World: $word\n</br>";
}
$helloWorld = 'echo "Redefined Hello World: $word\n</br>";';
hello_world('test1');
runkit_function_redefine('hello_world', '$word', $helloWorld);
hello_world('test2');
?>