Maison  >  Article  >  développement back-end  >  Comprendre 11 méthodes magiques en PHP en une minute

Comprendre 11 méthodes magiques en PHP en une minute

慕斯
慕斯avant
2021-06-28 11:35:084469parcourir

Nous avons tellement appris sur PHP. Je me demande si vous maîtrisez parfaitement les 11 méthodes magiques en PHP. Sinon, suivez cet article pour continuer à apprendre

1. , __set

Ces deux méthodes sont conçues pour les propriétés qui ne sont pas déclarées dans les classes et leurs classes parents

  • __get( $property ) Cette méthode est accessible lorsque appeler une propriété non définie
  • __set( $property, $value ) Appelé lors de l'attribution d'une valeur à une propriété non définie

La déclaration no inclut ici les attributs dont le contrôle d'accès est protégé et privé ( c'est-à-dire des attributs qui n'ont aucune autorisation d'accès)

2, __isset, __unset

  • __isset ( $property ) Cette méthode est appelée lorsque l'isset( ) la fonction 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. La déclaration no inclut ici les attributs dont le contrôle d'accès est protégé et privé (c'est-à-dire les 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, __autoload

__fonction autoload, automatiquement appelée lors de l'utilisation d'une classe qui n'a pas encore été défini. 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. Méthode constructeur __construct, __destruct

  • __construct, cette méthode est appelée lors de la création d'un objet. L'avantage est que la méthode constructeur peut avoir un. nom unique, quel que soit le nom de la classe dans laquelle elle se trouve, 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 méthode destructeur, PHP le fera utiliser la méthode destructeur avant que l'objet ne soit détruit (c'est-à-dire depuis Appeler cette méthode avant de l'effacer 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 liées à l'objet. objet. Le destructeur vous permet d'effectuer des opérations arbitraires après avoir utilisé le code d'un objet pour effacer la mémoire. Lorsque PHP détermine que votre script n'est plus associé à l'objet, le destructeur sera appelé dans l'espace de noms d'une fonction, cela se produira lorsque. la fonction renvoie. Pour les variables globales, cela se produira au retour de la fonction, si vous souhaitez détruire explicitement un objet, vous pouvez attribuer n'importe quelle autre valeur à la variable pointant vers l'objet, en attribuant généralement 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. Certaines opérations d'initialisation doivent être effectuées lors de la copie d'objets, qui 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 d'echo pour imprimer un objet, si la classe le fait. Si vous n'implémentez 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 est utilisé pendant la sérialisation
  • __wakeup est appelé pendant la désérialisation

serialize() vérifie s'il existe une fonction avec le nom magique __sleep dans la classe. 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 également 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 auraient pu être 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. PHP5.3.0 ou supérieur est valide
11. __callStatic

Il fonctionne de manière similaire à la méthode magique __call(), __callStatic() sert à gérer les appels de méthode statique, PHP5.3.0 Le la version ci-dessus fonctionne, PHP resserre la définition de la méthode __callStatic() ; elle doit être publique et doit être déclarée statique. De même, la méthode magique __call() doit être définie comme publique, comme toutes les autres méthodes magiques.

Apprentissage recommandé : "Tutoriel vidéo 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer