PHP 8.4.2 Released!

runkit7_method_redefine

(PECL runkit7 >= Unknown)

runkit7_method_redefineChange dynamiquement le code de la méthode donnée

Description

runkit7_method_redefine(
    string $class_name,
    string $method_name,
    string $argument_list,
    string $code,
    int $flags = RUNKIT7_ACC_PUBLIC,
    string $doc_comment = null,
    string $return_type = ?,
    bool $is_strict = ?
): bool
runkit7_method_redefine(
    string $class_name,
    string $method_name,
    Closure $closure,
    int $flags = RUNKIT7_ACC_PUBLIC,
    string $doc_comment = null,
    string $return_type = ?,
    bool $is_strict = ?
): bool

Liste de paramètres

class_name

La classe dans laquelle redéfinir la méthode

method_name

Le nom de la méthode à redéfinir

argument_list

La liste des arguments séparés par des virgules pour la méthode redéfinie

code

Le nouveau code à évaluer lorsque method_name est appelé

closure

Une closure qui définit la méthode.

flags

La méthode redéfinie peut être RUNKIT7_ACC_PUBLIC, RUNKIT7_ACC_PROTECTED ou RUNKIT7_ACC_PRIVATE optionnellement combiné via une opération bit à bit OU avec RUNKIT7_ACC_STATIC

doc_comment

Le commentaire de documentation de la méthode.

return_type

Le type de retour de la méthode.

is_strict

Si la méthode se comporte comme si elle était déclarée dans un fichier avec strict_types=1

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Exemples

Exemple #1 Exemple de runkit7_method_redefine()

<?php
class Example {
function
foo() {
return
"foo!\n";
}
}

// créer un objet Example
$e = new Example();

// affiche Example::foo() (avant la redéfinition)
echo "Before: " . $e->foo();

// Redéfinit la méthode 'foo'
runkit7_method_redefine(
'Example',
'foo',
'',
'return "bar!\n";',
RUNKIT7_ACC_PUBLIC
);

// affiche Example::foo() (après la redéfinition)
echo "After: " . $e->foo();
?>

L'exemple ci-dessus va afficher :

Before: foo!
After: bar!

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top