Les méthodes et fonctions magiques de PHP sont : 1. __get, appelant des attributs non définis ; 2. __set, attribuant des valeurs à des attributs non définis ; 3. __call, appelant des méthodes non définies ; la classe est automatiquement appelée ; 5. __clone, copiez l'objet.
Les méthodes et fonctions magiques sont les suivantes :
(Tutoriel recommandé : Tutoriel vidéo php)
1. __get, __set
Ces deux méthodes sont conçues pour les propriétés qui ne sont pas déclarées dans la classe et leur classe parent
__get( $property ) lors de l'appel d'une propriété non définie Cette méthode est accessible lorsque
__set( $property, $value ) Appelé lors de l'attribution d'une valeur à une propriété non définie
Il n'y a pas de déclaration ici incluant les attributs dont le contrôle d'accès est protégé et privé (c'est-à-dire, il n'y a aucune autorisation Propriétés accessibles)
2, __isset, __unset
__isset( $property ) Cette méthode est appelée lorsque la fonction isset() est appelée sur une propriété non définie
__unset ($property) Cette méthode est appelée lorsque la fonction unset() est appelée sur une propriété non définie
Identique à la méthode __get et à la méthode __set. Il n'y a pas de déclaration ici incluant les attributs dont le contrôle d'accès est. protégé et privé. (c'est-à-dire des attributs sans autorisation d'accès)
3. __call
__call( $method, $arg_array ) Lors de l'appel d'une méthode non définie (y compris aucune autorisation d'accès), cette méthode est appelée
4. La fonction __autoload
__autoload est automatiquement appelée lors de l'utilisation d'une classe qui n'a pas encore été définie. Cette fonction donne au moteur de script une dernière chance de charger les classes requises avant que PHP échoue avec une erreur.
Remarque : les exceptions levées dans la fonction __autoload ne peuvent pas être interceptées par le bloc d'instruction catch et entraînent une erreur fatale.
5. __construct, __destruct
__construct constructeur, cette méthode est appelée lors de la création d'un objet. L'avantage est que le constructeur peut avoir un nom unique, quel que soit le nom de la classe dans. où il se trouve. Qu'est-ce que c'est, de sorte que lorsque vous changez le nom de la classe, vous n'avez pas besoin de changer le nom de la méthode constructeur __destruct. La méthode destructeur PHP appellera cette méthode avant que l'objet ne soit détruit (c'est-à-dire). , avant qu'il ne soit effacé de la mémoire)
Par défaut, PHP libère uniquement la mémoire occupée par les propriétés de l'objet et détruit les ressources associées à l'objet. Les destructeurs permettent d'exécuter du code arbitraire pour effacer la mémoire après avoir utilisé un objet. , lorsque PHP détermine que votre script n'est plus lié à l'objet. , le destructeur sera appelé dans l'espace de noms d'une fonction, cela se produit lorsque la fonction revient. Pour les variables globales, cela se produit à la fin du script. pour détruire explicitement un objet, vous pouvez donner à la variable pointant vers l'objet une autre valeur, généralement en attribuant à la variable NULL ou en appelant unset.
6. __clone
L'affectation d'objet en PHP5 utilise l'affectation de référence lorsque vous utilisez la méthode clone pour copier un objet, l'objet appellera automatiquement la méthode magique __clone si quelque chose doit être exécuté. copie d'objet Certaines opérations d'initialisation peuvent être implémentées dans la méthode __clone.
7. __toString
La méthode __toString est automatiquement appelée lors de la conversion d'un objet en chaîne. Par exemple, lors de l'utilisation de echo pour imprimer un objet, si la classe n'implémente pas cette méthode. l'objet ne peut pas être imprimé via echo. Sinon, il affichera : Erreur fatale capturable : l'objet de la classe test n'a pas pu être converti en chaîne, cette méthode doit renvoyer une chaîne.
Avant PHP 5.2.0, la méthode __toString ne pouvait prendre effet que lorsqu'elle était utilisée conjointement avec echo() ou print(). Après PHP 5.2.0, il peut prendre effet dans n'importe quel environnement de chaîne (par exemple, via printf(), en utilisant le modificateur %s), mais ne peut pas être utilisé dans des environnements sans chaîne (comme en utilisant le modificateur %d). Depuis PHP 5.2.0, si un objet qui ne définit pas la méthode __toString est converti en chaîne, une erreur E_RECOVERABLE_ERROR sera signalée.
8. __sleep, __wakeup
__sleep Utilisez __wakeup lors de la sérialisation. Appelez
serialize() lors de la désérialisation pour vérifier s'il y a un nom magique dans la fonction class_ _sleep. Si tel est le cas, la fonction s'exécutera avant toute sérialisation. Il efface l'objet et doit renvoyer un tableau contenant les noms de toutes les variables de l'objet qui doivent être sérialisées.
Le but de l'utilisation de __sleep est de fermer toutes les connexions à la base de données que l'objet peut avoir, de soumettre des données en attente ou d'effectuer des tâches de nettoyage similaires. De plus, cette fonction est utile si vous disposez d’objets très volumineux qui n’ont pas besoin d’être stockés complètement.
À l'inverse, unserialize() vérifie l'existence d'une fonction portant le nom magique __wakeup. Cette fonction peut reconstruire toutes les ressources que l'objet peut avoir, s'il est présent. Le but de l'utilisation de __wakeup est de rétablir toutes les connexions à la base de données qui pourraient avoir été perdues lors de la sérialisation et de gérer d'autres tâches de réinitialisation.
9. __set_state
Lorsque var_export() est appelé, cette méthode statique sera appelée (valable depuis PHP 5.1.0). Le seul paramètre de cette méthode est un tableau contenant les propriétés de classe disposées au format array('property' => value, ...).
10. __invoke
Lorsque vous essayez d'appeler un objet en appelant une fonction, la méthode __invoke sera automatiquement appelée. Valable pour PHP5.3.0 ou supérieur
11, __callStatic
Cela fonctionne de manière similaire à la méthode magique __call(). __callStatic() consiste à gérer les appels de méthode statiques. Elle est valide en PHP5.3.0 et ci-dessus. PHP a en effet renforcé la définition de la méthode __callStatic() ; public et doit être déclaré static. De même, la méthode magique __call() doit être définie comme publique, comme toutes les autres méthodes magiques.
Recommandations associées : formation php
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!