Maison >développement back-end >tutoriel php >Exemples d'utilisation de méthodes magiques en PHP
Dans cet article, l'éditeur donnera une brève description de l'utilisation des méthodes magiques en PHP avec le code ci-joint. Les amis intéressés peuvent y jeter un œil !
Qu'est-ce que la « méthode magique » ?
Méthodes commençant par deux traits de soulignement en PHP, __construct(), __destruct(), __call(), __callStatic(),__get(), __set(), __isset(), __unset ( ), __sleep (), __wakeup(), __toString(), __set_state,() __clone() __autoload(), etc., sont appelés « méthodes magiques ». Si vous souhaitez que PHP appelle ces méthodes magiques, elles doivent d'abord être définies dans la classe, sinon PHP n'exécutera pas les méthodes magiques non créées.
1.__get __set est appelé lors de l'attribution et de la lecture d'attributs inaccessibles
2.__sleep est appelé lors de la sérialisation d'objets
3.__wakeup est Call
lorsque désérialiser l'objet. 4. Lors de la sérialisation de l'objet, vous pouvez uniquement sérialiser les attributs spécifiés et réduire la taille après la sérialisation. Lorsque vous souhaitez stocker la chaîne de l'objet dans, par exemple, memcache , plus utile
5. Par exemple, dans l'exemple suivant, j'ai uniquement sérialisé l'attribut data et je l'ai restreint dans la fonction __sleep
<?php class Test{ public $name; protected $data=array(); public function __set($name,$value){ $this->data[$name]=$value; } public function __get($name){ if(!isset($this->data[$name])){ return ""; } return $this->data[$name]; } public function __sleep(){ echo "sleep...\r\n"; return array('data'); } public function __wakeup(){ echo "wakeup...\r\n"; } } $test=new Test(); $test->name="我不会被序列化进去"; $test->bbbb="taoshihan"; $testObjectStr=serialize($test); var_dump($testObjectStr); var_dump(unserialize($testObjectStr));
Tutoriels associés : Un ensemble complet de tutoriels vidéo sur la programmation PHP de l'entrée au master
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!