Maison >développement back-end >Problème PHP >Méthodes magiques couramment utilisées en PHP (partage de résumé)
(Tutoriel recommandé : Tutoriel vidéo PHP)
Elle sera appelée lorsque la classe est instanciée
En termes simples, lorsqu'une nouvelle classe est créée, cette méthode sera exécutée automatiquement
<?php class autofelix { public function __construct() { echo '我是飞兔小哥~'; } } new autofelix();
Déclenché automatiquement lorsque la classe est détruite
Vous pouvez utiliser la méthode unset pour déclencher cette méthode
<?php class autofelix { public function __destruct() { echo '我是飞兔小哥,别销毁我~'; } } unset(new autofelix());
Elle sera automatiquement appelée lorsque la classe est clonée
<?php class autofelix { public function __clone() { echo '我是飞兔小哥,我想克隆你~'; } } $a = new autofelix(); clone $a;
Elle sera appelée automatiquement lorsque la méthode à appeler n'existe pas ou que les autorisations sont insuffisantes
Par exemple, lorsque j'appelle une méthode privée modifiée à l'intérieur de la classe depuis l'extérieur de la classe
<?php class autofelix { private function say() { echo '我是飞兔小哥~'; } public function __call($name, $arguments) { echo '你无权调用' . $name . '方法'; die; } } (new autofelix())->say();
Quand elle doit être appelée La méthode statique sera appelée automatiquement lorsqu'elle n'existe pas ou que les autorisations sont insuffisantes
Par exemple, si j'appelle la méthode statique privée modifiée à l'intérieur de la classe depuis l'extérieur de la classe
<?php class autofelix { private static function say() { echo '我是飞兔小哥~'; } public function __callStatic($name, $arguments) { echo '你无权调用' . $name . '方法'; die; } } $a = new autofelix(); $a::say();
Cette méthode sera appelée lorsque l'objet de classe var_dump()
Si cette méthode n'est pas définie, var_dump() imprimera tous les attributs de classe
<?php class autofelix { public function __debugInfo() { echo '飞兔小哥给你温馨提示'; } } var_dump(new autofelix());
Grâce à elle, vous peut obtenir des attributs de membre privé en dehors de l'objet
<?php class autofelix { private $name = '飞兔小哥'; public function __get($name) { if(in_array($name, ['name', 'age'])) { echo $this->name; } else { echo '不是什么东西都能访问的~'; } } } (new autofelix())->name;
Lorsque isset() ou empty() est appelé sur une propriété inaccessible, il sera automatiquement appelé
<?php class autofelix { private $name = '飞兔小哥'; public function __isset($name) { if(in_array($name, ['name', 'age'])) { echo $this->name; } else { echo '不是什么东西都能访问的~'; } } } isset(new autofelix()->name);
Lors de l'attribution d'un valeur à une propriété non définie, elle sera déclenchée
<?php class autofelix { public function __set($name, $value) { echo '你想给' . $name . '赋值' . $value; } } (new autofelix())->name = '飞兔小哥';
L'objet lui-même ne peut pas être utilisé directement comme fonction
Si l'objet est appelé en tant que fonction, cette méthode sera déclenchée
<?php class autofelix { public function __invoke() { echo '你想调用我?'; } } (new autofelix())();
Lorsque serialize() est appelé en dehors de la classe, il sera automatiquement appelé
<?php class autofelix { public function __sleep() { echo '我是飞兔小哥~'; } } serialize(new autofelix());
Sera automatiquement appelé lorsque la méthode unserialize() est exécutée
<?php class autofelix { public function __wakeup() { echo '我是飞兔小哥~'; } } unserialize(new autofelix());
Ce qui doit être retourné lorsqu'une classe est traitée comme une chaîne
Un type de chaîne doit être renvoyé ici, sinon une erreur fatale sera signalée
<?php class autofelix { public function __toString() { return '我是你得不到的对象...'; } } $a = new autofelix(); echo $a;
Lorsque unset() est appelé sur un inaccessible propriété, elle sera automatiquement appelée
<?php class autofelix { private $name = '飞兔小哥'; public function __unset($name) { echo '别删我,我是你兔哥'; } } $a = new autofelix(); unset($a->name);
(Tutoriel 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!