Maison > développement back-end > tutoriel php > Quand les méthodes magiques __get et __set de PHP sont-elles réellement appelées ?

Quand les méthodes magiques __get et __set de PHP sont-elles réellement appelées ?

Mary-Kate Olsen
Libérer: 2024-11-16 15:34:02
original
263 Les gens l'ont consulté

When Do PHP's __get and __set Magic Methods Actually Get Called?

Méthodes magiques PHP __get et __set : comprendre l'invocation et les limitations

Les méthodes magiques __get et __set en PHP sont conçues pour gérer l'accès aux propriétés des objets et modification lorsque les propriétés ne sont pas accessibles au public. Cependant, certaines idées fausses peuvent surgir concernant leur comportement.

Propriétés inaccessibles

__get et __set sont invoquées lorsque la propriété ou la méthode est inaccessible. Dans l'exemple fourni, $bar est une propriété publique, accessible par défaut. Par conséquent, les méthodes magiques ne sont pas déclenchées.

Substitut Getter et Setter

Les méthodes magiques ne sont pas destinées à remplacer les getters et les setters. Ils fournissent un mécanisme de secours pour gérer les propriétés inaccessibles. Ils sont principalement conçus pour la gestion des erreurs et ne doivent pas être utilisés uniquement pour l'accès et la modification des propriétés.

Considérations relatives aux performances

L'utilisation de méthodes magiques peut entraîner des vitesses d'exécution plus lentes que celles à l'utilisation de getters, de setters explicites ou d'un accès direct aux propriétés. En effet, les méthodes magiques impliquent des appels de méthodes supplémentaires et une introspection orientée objet.

Modification de l'exemple

Pour illustrer l'utilisation appropriée des méthodes magiques, modifions l'exemple pour utiliser une propriété privée :

class foo {

    private $bar;
    public function __get($name) {

        echo "Get:$name";
        return $this->$name;
    }

    public function __set($name, $value) {

        echo "Set:$name to $value";
        $this->$name = $value;
    }
}

$foo = new foo();
echo $foo->bar; // Invokes __get()
$foo->bar = 'test'; // Invokes __set()
echo "[$foo->bar]"; // Outputs [test]
Copier après la connexion

Dans cet exemple, la propriété $bar est désormais privée, la rendant inaccessible par défaut. Par conséquent, les méthodes __get et __set sont correctement invoquées lors de l'accès et de la modification de la propriété.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal