Les méthodes magiques couramment utilisées incluent : Tostring () Call() autoLoad() clone() GET() SET() isset() unset()
1.Tostring() est utilisé pour définir l'objet de sortie et est appelé lors du référencement de . des informations sur certains objets et doit avoir une valeur de retour.
par exemple : Il existe une classe de persion
Persion per =new persion()
Echo per; //L'appel direct provoquera une erreur
Nous pouvons ajoutez la méthode tostring() dans la définition de la classe
Function Tostring() { $str=this->$name.this->age; Return $str; }
2.Clone() copie d'objet
Affectation de référence
$per1=$per2; n'a qu'une seule adresse en mémoire
et $per1=clone $ per2 Il y a deux adresses mémoire en ce moment
3 La méthode call() est automatiquement exécutée lors de l'appel d'une fonction qui le fait. n'existe pas dans l'instance de classe
Si vous essayez d'appeler une fonction qui n'existe pas dans la classe, il y aura une erreur de syntaxe , afin de fournir une invite conviviale
on peut déclarer la méthode Call() dans la classe
Function call($funName,$argu) { Echo "名为".$funName."参数为".printf($argh)."的函数不存在", }
4.autoLoad Charger automatiquement le fichier de classe utilisé par Cette fonction consiste à ajouter
à la page référencée. Nous avons tous utilisé cette situation. Lorsque nous devons appeler d'autres fichiers php dans la page, nous devons utiliser la méthode include
Mais s'il y a des dizaines de pages qui en ont besoin. pour être référencé, ce serait trop fastidieux. Nous pouvons utiliser la méthode de chargement automatique
Function autoload($className) { Include $className.".php"; }
sur la page De cette façon, partout où d'autres classes sont référencées, le fichier de classe sera automatiquement référencé. le fichier de classe prérequis doit être Class name.php
5.GET() Accéder aux attributs privés de la classe
Si les attributs de la classe sont définis sur des attributs privés, dans le instance de la classe Elle est inaccessible, mais comment puis-je y accéder ?
Nous pouvons utiliser GET()
Par exemple :
la classe a
class person { Private $name; Private $age; }
pour instancier la personne per=new person()
Per- > $name; //La valeur ne peut pas être obtenue de cette manière
Mais si nous ajoutons la méthode GET dans la classe
Function GET($proName) { Return this->$proName; }
nous pouvons y accéder en appelant à nouveau Per->$name
Certaines personnes peuvent se poser des questions en faisant cela. De cette manière, les variables privées sont accessibles directement. Quelle est la différence entre les déclarer publiques ?
S'il est déclaré public, on peut le lire arbitrairement. S'il est privé, si on ajoute la méthode get, alors le contenu de la méthode GET sera appelé à chaque appel de l'attribut privé, on pourra donc en ajouter. logique à la méthode get deal with.
6.SET() définit les attributs privés dans la classe
Le principe est le même que ci-dessus Nous pouvons ajouter la fonction SET() à la classe et lui attribuer une valeur. l'attribut privé en appelant l'instance de classe. , exécutera la fonction SET, Prototype de fonction :
Function SET($proName,$value) { This->$proName=$value; }
Puisqu'il s'agit d'une affectation de méthode, nous pouvons effectuer un traitement logique
7.isset() Appelez automatiquement
pour déterminer si des propriétés ou des méthodes privées dans une classe existent. Tout d'abord, introduisons la méthode isset Cette méthode est utilisée pour déterminer si les propriétés . et les méthodes existent, mais nous ne pouvons pas transmettre les instances de classe. Déterminer si un attribut privé dans la classe existe
Si nous utilisons isset(per->$name);//La valeur de retour est fausse, mais le $ L'attribut name existe, comment le résoudre ?
Solution :
1. Définissez $name comme propriété privée
2. Ajoutez
Function isset($proName) { Return isset(this->$proName);//再类内部是可以访问私有属性的 }
8.unset() est automatiquement appelée lors de la suppression des variables privées dans la classe<🎜 ; >Combiné avec cela, unset(). La méthode unset peut supprimer des attributs lorsque nous devons supprimer des attributs dans une classe, s'il s'agit d'un attribut public, nous pouvons directement
le supprimer, mais s'il est privé. , nous ne pouvons pas y parvenir uniquement via cette méthode. Comment l'implémenter ? Nous pouvons utiliser la méthode unset() pour réaliser cette fonction. Nous devons maintenant ajouter
Function unset($proName){Unset(this->$proName);}
.
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!