Maison >développement back-end >tutoriel php >Php Magic Methods Cheatheet
Cet article fournit un tableau de recherche rapide des méthodes PHP Magic pour une référence facile.
Que vous soyez un développeur PHP expérimenté ou un débutant dans le développement de PHP, si vous avez utilisé une programmation orientée objet PHP, vous devez avoir utilisé au moins plusieurs méthodes de magie PHP. Si vous n'avez pas entendu parler de la méthode magique de PHP, permettez-moi de l'introduire:
PHP fournit de nombreuses méthodes magiques telles que __destruct()
, __callStatic()
, __set()
, __unset()
, __wakeup()
, __invoke()
, __clone()
, __get()
, __call()
, __serialize()
, etc. Évitez d'écrire trop de code dans ces méthodes, pour des considérations de clarté et de maintenance, il est préférable de définir des méthodes bien définies pour l'acquisition et le réglage des membres, ou définir des méthodes de classe. Les méthodes __unserialize()
et
Exemple:
<?php class Student { private $name; private $email; private $phone; private $db_connection_link; public function __construct($name, $email, $phone) { $this->name = $name; $this->email = $email; $this->phone = $phone; } public function __serialize() { return ['name' => $this->name, 'email' => $this->email, 'mobile' => $this->phone]; } public function __wakeup($data) { $this->name = $data['name']; $this->email = $data['email']; $this->phone = $data['mobile']; $this->db_connection_link = your_db_connection_function(); } } ?>
__wakeup()
Il convient de noter que les méthodes __serialize()
et __unserialize()
ne seront appelées que lorsque la méthode
__invoke()
__invoke()
<?php class Student { private $name; private $email; public function __construct($name, $email) { $this->name = $name; $this->email = $email; } public function __invoke() { echo 'Student 对象被当作函数调用!'; } } $objStudent = new Student('John', 'john@tutsplus.com'); $objStudent(); ?>
$objStudent
Comme vous pouvez le voir, l'objet __invoke()
est traité comme une fonction, et comme nous avons défini la méthode __invoke()
, elle sera appelée au lieu de renvoyer une erreur. L'objectif principal de la méthode
__clone()
clone
Si vous souhaitez copier un objet existant, vous pouvez utiliser le mot-clé __clone()
. Mais après le clonage, si vous souhaitez modifier les propriétés de l'objet cloné, vous pouvez définir la méthode magique
<?php Class Student_School {} class Student { private $name; private $email; private $object_student_school; public function __construct() { $this->object_student_school = new Student_School(); } public function __clone() { $this->object_student_school = clone $this->object_student_school; } } $objStudentOne = new Student(); $objStudentTwo = clone $objStudentOne; ?>
Le problème avec la méthode ci-dessus est qu'il crée une copie peu profonde de l'objet lors du clonage, de sorte que l'objet intérieur de l'objet cloné ne sera pas cloné.
__clone()
Dans l'exemple ci-dessus, si vous ne définissez pas la méthode $objStudentTwo
, l'objet cloné $objStudentOne
pointera toujours vers l'objet Student_School
référencé par l'objet __clone()
. Par conséquent, en implémentant la méthode Student_School
, nous nous assurons que l'objet
__debugInfo()
__debugInfo()
var_dump()
La méthode magique est appelée lorsque vous essayez de vider un objet en utilisant la fonction
<?php class Student { private $name; private $email; private $phone; private $db_connection_link; public function __construct($name, $email, $phone) { $this->name = $name; $this->email = $email; $this->phone = $phone; } public function __serialize() { return ['name' => $this->name, 'email' => $this->email, 'mobile' => $this->phone]; } public function __wakeup($data) { $this->name = $data['name']; $this->email = $data['email']; $this->phone = $data['mobile']; $this->db_connection_link = your_db_connection_function(); } } ?>
Cette méthode doit renvoyer un tableau de paires de valeurs clés qui seront affichées lorsque la fonction var_dump()
est appelée sur l'objet. Comme vous pouvez le voir, vous avez un contrôle total sur ce que vous souhaitez afficher lors du vidage d'un objet à l'aide de la fonction var_dump()
.
__set_state()
Méthode
__set_state()
est une méthode statique utilisée avec la fonction var_export()
. var_export()
Fonction Sortie des informations structurées sur les variables. Lorsque vous exportez une classe en utilisant cette fonction, vous devez définir la méthode __set_state()
dans la classe.
<?php class Student { private $name; private $email; public function __construct($name, $email) { $this->name = $name; $this->email = $email; } public function __invoke() { echo 'Student 对象被当作函数调用!'; } } $objStudent = new Student('John', 'john@tutsplus.com'); $objStudent(); ?>
Comme vous pouvez le voir, la chaîne exportée est un code PHP valide que vous pouvez utiliser pour restaurer l'objet d'origine.
Résumé
Cet article présente toutes les méthodes magiques disponibles en PHP. Pour chaque approche, j'ai fourni un exemple court mais significatif qui devrait vous aider à comprendre son objectif. J'espère que vous pourrez utiliser cet article comme une référence rapide ou une table de recherche rapide dans le développement de PHP quotidien.
Cet article a été mis à jour et contient des contributions de Monty Shokeen. Monty est un développeur complet qui aime également écrire des tutoriels et apprendre de nouvelles bibliothèques JavaScript.
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!