Maison php教程 php手册 PHP5魔術方法的调用实例

PHP5魔術方法的调用实例

Jun 13, 2016 am 10:51 AM
php5 函数 实例 对象 方法 heure de 调用 la magie

PHP5魔術方法
 
魔术函数:  
 
1。__construct()
 
  构造函数 : 实例化对象时被调用,
 
  当__construct和以类名为函数名的构造函数同时存在时,__construct将被调用,另一个不被调用。
 
2。__destruct()
 
析构函数 : 当删除一个对象或对象操作终止时被调用(程序结束后对象就摧毁)。
 
永远都是最后执行的。
 
3。__call()
 
  对象调用某个方法,
 
  若方法存在,则直接调用;
 
若不存在,则会去调用__call函数。
 
4。__get()
 
  读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。
 
  5。__set()
 
  设置一个对象的属性时,
 
  若属性存在,则直接赋值;
 
  若不存在,则会调用__set函数。
 
  6。__toString()
 
  打印一个对象的时被调用。如echo $obj;或print $obj;
 
  7。__clone()
 
  克隆对象时被调用。如:$t=new Test();$t1=clone $t;
 
  8。__sleep()
 
  serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
 
  9。__wakeup()
 
  unserialize时被调用,做些对象的初始化工作。
 
  10。__isset()
 
  检测一个对象的属性是否存在时被调用。如:isset($c->name)。
 
  11。__unset()
 
  unset一个对象的属性时被调用。如:unset($c->name)。
 
  12。__set_state()
 
  调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
 
  13。__autoload()
 
  实例化一个对象时,如果对应的类不存在,则该方法被调用。
 
  魔术常量
 
  1。__LINE__
 
  返回文件中的当前行号。
 
  2。__FILE__
 
  返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。
 
  3。__FUNCTION__
 
  返回函数名称(PHP 4.3.0 新加)。自PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在PHP 4 中该值总是小写字母的。
 
  4。__CLASS__
 
  返回类的名称(PHP 4.3.0 新加)。自PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在PHP 4 中该值总是小写字母的。
 
  5。__METHOD__
 
  返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
 
  (1)初识魔术方法
 
  Php5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术方法,这些魔术方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下php5.0给我们提供的魔术方法。
 
PHP | 魔术方法| __toString(),__clone(),__call(),__autoload() 详解
 
__toString()
 
如果我有一个类:
 
class Person
 
{
 
private $name = “”;
 
private $age = 0;
 
function __construct($name = “”, $age = “”)
 
{
 
$this->name = $name;
 
$this->age = $age;
 
}
 
function say()
 
{
 
echo “name:”.$this->name.”
”.”age:”.$this->age.”
”;  
 
}
 
}
 
现在我去实例化这个类,然后去打印这个实例:
 
$p1 = new person(“liuzy”,20);
 
echo $p1;  //直接打印会出错
 
显然这样直接打印对象是会出现错误的,因为对象是引用句柄,不能直接打印。这时,我们可以用到__toString()方法。我们在Person类里加一个__toString()方法:
 
function __toString()
 
{
 
return “I am  Person,my name is “.$this->name.”
”;
 
}
 
然后再刷新页面,发现什么了?
 
现在我们明白,__toString()是在直接打印对象时执行的方法,我们可以用该方法打印类的一些相关信息。注意:是两个下划线,方法必须有返回值。
 
__clone()
 
我们知道对象是可以直接赋值的,比如
 
$p2 = $p1;   //这里是一个对象有两个引用
 
那么我执行:
 
$p1->say();
 
$p2->say();
 
是都可以执行的,而且效果一样。
 
我们还有一种方法:
 
$p3 = clone $p1;     //注意clone是克隆关键字,这里与上面的不同是$p3是一个新的对象。
 
同时我们在类里加入一个方法:
 
function __clone()
 
{
 
$this->name = “我是副本”;  //注意:这里的$this是克隆产生的对象本身,不是当前类
 
}
 
然后我们执行:
 
$p3->say();
 
打印出:
 
name:我是副本
 
age:20
 
到这里我们明白,__clone()方法是在克隆对象的时候执行的方法,它的作用是对新克隆出来的副本
 
进行属性初始化等操作。
 
__call()
 
这个方法的主要功能是:在该类的实例调用一个不存在的方法时,执行该__call()方法。注意需要提前在类里
 
声明:
 
function __call($fname,$argus)
 
{
 
echo “你调用的方法:”.$fname.”不存在
”;
 
echo “参数是”.print_r($argus);
 
}
 
声明时包含两个参数,第一个参数是string型,是调用的不存在的方法的方法名($fname),第二个参数是
 
array型,是调用的不存在的方法的参数($argus)。
 
__autoload()
 
我们在平时调用一个类的时候,必须要先将该类所在的文件引入(include “xxx.php”),如果我们在一个页里调用的类很多,那么我们不得不使用许多的include “xxx.php”。显然这样很麻烦。
 
__autoload()方法可以帮我们解决这个问题。
 
比如我们将上面的那个Person类所在的文件定义为Person_class.php  ,
 
再新建一个php文件  test.php,编辑内容:
 
function  __autoload($calssName)
 
{
 
include $className.”_class.php”;  //看到这也许你就明白了吧?哈哈
 
}
 
$p = new Person(“mifan”, 22);
 
$p->say();
 
这样执行该test.php页面就不会出现错误了。
 
__autoload()方法是在生命不存在的类时调用的方法,它有一个string类型的参数是声明该不存在类的类名。
 
当然,类文件的命名也是很有讲究的。最好是和类有关系,比如Person_class.php
 
 

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment récupérer des contacts supprimés sur WeChat (un tutoriel simple vous explique comment récupérer des contacts supprimés) Comment récupérer des contacts supprimés sur WeChat (un tutoriel simple vous explique comment récupérer des contacts supprimés) May 01, 2024 pm 12:01 PM

Malheureusement, les gens suppriment souvent certains contacts accidentellement pour certaines raisons. WeChat est un logiciel social largement utilisé. Pour aider les utilisateurs à résoudre ce problème, cet article explique comment récupérer les contacts supprimés de manière simple. 1. Comprendre le mécanisme de suppression des contacts WeChat. Cela nous offre la possibilité de récupérer les contacts supprimés. Le mécanisme de suppression des contacts dans WeChat les supprime du carnet d'adresses, mais ne les supprime pas complètement. 2. Utilisez la fonction intégrée « Récupération du carnet de contacts » de WeChat. WeChat fournit une « Récupération du carnet de contacts » pour économiser du temps et de l'énergie. Les utilisateurs peuvent récupérer rapidement les contacts précédemment supprimés grâce à cette fonction. 3. Accédez à la page des paramètres WeChat et cliquez sur le coin inférieur droit, ouvrez l'application WeChat « Moi » et cliquez sur l'icône des paramètres dans le coin supérieur droit pour accéder à la page des paramètres.

Le secret de l'éclosion des œufs de dragon mobiles est révélé (étape par étape pour vous apprendre à réussir l'éclosion des œufs de dragon mobiles) Le secret de l'éclosion des œufs de dragon mobiles est révélé (étape par étape pour vous apprendre à réussir l'éclosion des œufs de dragon mobiles) May 04, 2024 pm 06:01 PM

Les jeux mobiles font désormais partie intégrante de la vie des gens avec le développement de la technologie. Il a attiré l'attention de nombreux joueurs avec sa jolie image d'œuf de dragon et son processus d'éclosion intéressant, et l'un des jeux qui a beaucoup attiré l'attention est la version mobile de Dragon Egg. Pour aider les joueurs à mieux cultiver et faire grandir leurs propres dragons dans le jeu, cet article vous présentera comment faire éclore des œufs de dragon dans la version mobile. 1. Choisissez le type d'œuf de dragon approprié. Les joueurs doivent choisir soigneusement le type d'œuf de dragon qu'ils aiment et qui leur conviennent, en fonction des différents types d'attributs et de capacités d'œuf de dragon fournis dans le jeu. 2. Améliorez le niveau de la machine d'incubation. Les joueurs doivent améliorer le niveau de la machine d'incubation en accomplissant des tâches et en collectant des accessoires. Le niveau de la machine d'incubation détermine la vitesse d'éclosion et le taux de réussite de l'éclosion. 3. Collectez les ressources nécessaires à l'éclosion. Les joueurs doivent être dans le jeu.

Comment définir la taille de la police sur le téléphone mobile (ajustez facilement la taille de la police sur le téléphone mobile) Comment définir la taille de la police sur le téléphone mobile (ajustez facilement la taille de la police sur le téléphone mobile) May 07, 2024 pm 03:34 PM

La définition de la taille de la police est devenue une exigence de personnalisation importante à mesure que les téléphones mobiles deviennent un outil important dans la vie quotidienne des gens. Afin de répondre aux besoins des différents utilisateurs, cet article présentera comment améliorer l'expérience d'utilisation du téléphone mobile et ajuster la taille de la police du téléphone mobile grâce à des opérations simples. Pourquoi avez-vous besoin d'ajuster la taille de la police de votre téléphone mobile - L'ajustement de la taille de la police peut rendre le texte plus clair et plus facile à lire - Adapté aux besoins de lecture des utilisateurs d'âges différents - Pratique pour les utilisateurs malvoyants qui souhaitent utiliser la taille de la police fonction de configuration du système de téléphonie mobile - Comment accéder à l'interface des paramètres du système - Dans Rechercher et entrez l'option "Affichage" dans l'interface des paramètres - recherchez l'option "Taille de la police" et ajustez-la. application - téléchargez et installez une application prenant en charge l'ajustement de la taille de la police - ouvrez l'application et entrez dans l'interface des paramètres appropriée - en fonction de l'individu

Conseils pour créer dynamiquement de nouvelles fonctions dans les fonctions Golang Conseils pour créer dynamiquement de nouvelles fonctions dans les fonctions Golang Apr 25, 2024 pm 02:39 PM

Le langage Go propose deux technologies de création de fonctions dynamiques : la fermeture et la réflexion. les fermetures permettent d'accéder aux variables dans la portée de la fermeture, et la réflexion peut créer de nouvelles fonctions à l'aide de la fonction FuncOf. Ces technologies sont utiles pour personnaliser les routeurs HTTP, mettre en œuvre des systèmes hautement personnalisables et créer des composants enfichables.

Considérations relatives à l'ordre des paramètres dans la dénomination des fonctions C++ Considérations relatives à l'ordre des paramètres dans la dénomination des fonctions C++ Apr 24, 2024 pm 04:21 PM

Dans la dénomination des fonctions C++, il est crucial de prendre en compte l’ordre des paramètres pour améliorer la lisibilité, réduire les erreurs et faciliter la refactorisation. Les conventions courantes d'ordre des paramètres incluent : action-objet, objet-action, signification sémantique et conformité de la bibliothèque standard. L'ordre optimal dépend de l'objectif de la fonction, des types de paramètres, de la confusion potentielle et des conventions du langage.

Comment choisir une protection d'écran pour téléphone portable pour protéger l'écran de votre téléphone portable (plusieurs points clés et conseils pour l'achat de protections d'écran pour téléphone portable) Comment choisir une protection d'écran pour téléphone portable pour protéger l'écran de votre téléphone portable (plusieurs points clés et conseils pour l'achat de protections d'écran pour téléphone portable) May 07, 2024 pm 05:55 PM

Le film pour téléphone portable est devenu l'un des accessoires indispensables avec la popularité des smartphones. Pour prolonger sa durée de vie, choisissez un film de téléphone portable adapté pour protéger l'écran du téléphone portable. Pour aider les lecteurs à choisir le film pour téléphone portable le plus approprié, cet article présentera plusieurs points clés et conseils pour l'achat d'un film pour téléphone portable. Comprendre les matériaux et les types de films pour téléphones portables : film PET, TPU, etc. Les films pour téléphones portables sont constitués de divers matériaux, dont le verre trempé. Le film PET est relativement doux, le film en verre trempé a une bonne résistance aux rayures et le TPU a de bonnes performances antichoc. Cela peut être décidé en fonction des préférences et des besoins personnels lors du choix. Tenez compte du degré de protection de l'écran. Différents types de films pour téléphones portables ont différents degrés de protection d'écran. Le film PET joue principalement un rôle anti-rayures, tandis que le film en verre trempé a une meilleure résistance aux chutes. Vous pouvez choisir d'avoir mieux

Comment écrire des fonctions efficaces et maintenables en Java ? Comment écrire des fonctions efficaces et maintenables en Java ? Apr 24, 2024 am 11:33 AM

La clé pour écrire des fonctions Java efficaces et maintenables est la suivante : restez simple. Utilisez un nom significatif. Gérer des situations particulières. Utilisez une visibilité appropriée.

Comment convertir le tableau de résultats d'une requête MySQL en objet ? Comment convertir le tableau de résultats d'une requête MySQL en objet ? Apr 29, 2024 pm 01:09 PM

Voici comment convertir un tableau de résultats de requête MySQL en objet : Créez un tableau d'objets vide. Parcourez le tableau résultant et créez un nouvel objet pour chaque ligne. Utilisez une boucle foreach pour attribuer les paires clé-valeur de chaque ligne aux propriétés correspondantes du nouvel objet. Ajoute un nouvel objet au tableau d'objets. Fermez la connexion à la base de données.

See all articles