Maison > développement back-end > tutoriel php > Pourquoi les méthodes magiques __get et __set de PHP ne sont-elles pas invoquées lors de l'accès à une propriété publique ?

Pourquoi les méthodes magiques __get et __set de PHP ne sont-elles pas invoquées lors de l'accès à une propriété publique ?

Barbara Streisand
Libérer: 2024-11-25 19:59:15
original
890 Les gens l'ont consulté

Why are PHP's __get and __set magic methods not invoked when accessing a public property?

Méthodes magiques __get et __set en PHP

PHP fournit des méthodes magiques qui permettent aux développeurs de surcharger certaines opérations, telles que l'accès aux propriétés et les appels de méthodes. Parmi ces méthodes figurent __get et __set, qui sont conçues pour remplacer le comportement par défaut de l'accès aux propriétés.

Le code fourni définit une classe foo avec des propriétés publiques et des méthodes magiques __get et __set. Cependant, lorsque vous tentez d'utiliser ces méthodes pour accéder à $foo->bar, seule la propriété publique est accessible.

En effet, __get et __set ne sont invoqués que lorsque la propriété ou la méthode est inaccessible. Puisque $foo->bar est une propriété publique, les méthodes magiques ne sont pas déclenchées.

Conformément au manuel PHP, __get est exécuté lors de la lecture de données à partir de propriétés inaccessibles, et __set est utilisé lors de l'écriture de données dans des propriétés inaccessibles. propriétés. Dans ce cas, les membres de la classe sont publics et donc accessibles, ce qui rend les méthodes magiques non pertinentes.

Au lieu d'utiliser des méthodes magiques, envisagez d'implémenter des getters et setters appropriés ou d'accéder directement aux propriétés pour un comportement plus efficace et prévisible. Les méthodes magiques doivent être réservées à des cas exceptionnels où des propriétés ou des méthodes sont inaccessibles par des moyens normaux.

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