7. L'utilisation de la référence spéciale "$this"
Nous savons maintenant comment accéder aux membres de l'objet, accessible via la méthode "object->member", qui se trouve en dehors de l'objet
est la forme d'accès aux membres de l'objet, alors si je veux laisser la méthode dans l'objet accéder aux propriétés de cet objet à l'intérieur de l'objet, ou
est la méthode dans l'objet pour appeler d'autres méthodes de cet objet, alors comment fait-on pour gérer ? Parce que tous les membres de l'objet doivent être appelés à l'aide de l'objet
, y compris les appels entre membres internes de l'objet, PHP me fournit une référence à cet objet $this,
pour chaque objet Il existe une référence d'objet $this pour représenter l'objet et compléter l'appel des membres internes de l'objet. La signification originale de this est
"this". Dans l'exemple ci-dessus, nous instancions trois objets instances $P1, $ P2, $P3, chacun de. ces trois objets
ont leur propre $this, qui représente respectivement les objets $p1, $p2 et $p3.
Nous pouvons voir sur la figure ci-dessus que $this est la référence qui représente l'objet à l'intérieur de l'objet. La méthode utilisée pour appeler les membres
de cet objet à l'intérieur de l'objet et les membres de l'objet à l'extérieur de l'objet sont. le même.
$this->属性$this->name; $this->age; $this->sex; $this->方法$this->say(); $this->run();
Modifiez l'exemple ci-dessus afin que chacun puisse indiquer son nom, son sexe et son âge :
<?php class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() //这个人可以说话的方法 { echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是: ".$this->age."<br>"; }f unction run() //这个人可以走路的方法 { echo "这个人在走路"; } } $p1=new Person(); //创建实例对象$p1 $p2=new Person(); //创建实例对象$p2 $p3=new Person(); //创建实例对象$p3 //下面三行是给$p1对象属性赋值 $p1->name="张三"; $p1->sex="男"; $p1->age=20; //下面访问$p1对象中的说话方法 $p1->say(); //下面三行是给$p2对象属性赋值 $p2->name="李四"; $p2->sex="女"; $p2->age=30; //下面访问$p2对象中的说话方法 $p2->say(); //下面三行是给$p3对象属性赋值 $p3->name="王五"; $p3->sex="男"; $p3->age=40; //下面访问$p3对象中的说话方法 $p3->say(); ?>
Le résultat de sortie est :
我的名字叫:张三性别:男我的年龄是:20 我的名字叫:李四性别:女我的年龄是:30 我的名字叫:王五性别:男我的年龄是:40
Analyser cette méthode :
function say() //这个人可以说话的方法 { echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是: ".$this->age."<br>"; }
Il existe une méthode say() dans les trois objets $p1, $p2 et $p3, $ cela représente respectivement ces trois objets . Appelez l'attribut
correspondant et imprimez la valeur de l'attribut. C'est ainsi que vous accédez aux attributs de l'objet à l'intérieur de l'objet. Si vous appelez
dans la méthode say(), utilisez run(). également possible. Utilisez $this->run() dans la méthode say() pour terminer l'appel.
8. Méthodes constructeur et destructeur
La plupart des classes ont une méthode spéciale appelée constructeur. Lorsqu'un objet est créé, il appellera automatiquement le constructeur, c'est-à-dire que lorsque le nouveau mot-clé sera utilisé pour instancier l'objet, le constructeur sera automatiquement appelé.
La déclaration d'un constructeur est la même que la déclaration des autres opérations, sauf que son nom doit être __construct(). Il s'agit d'un changement dans PHP5.
Dans les versions précédentes, le nom du constructeur doit être le même que le nom de la classe. Cela peut toujours être utilisé en PHP5, mais maintenant très peu de personnes
l'utilisent. L'avantage est que le constructeur peut être rendu indépendant du nom de la classe. Lorsque le nom de la classe change, il n'est pas nécessaire de changer le
nom du constructeur correspondant. Pour des raisons de compatibilité ascendante, s'il n'y a pas de méthode nommée __construct() dans une classe, PHP recherchera une méthode
dans php4, une méthode constructeur portant le même nom que le nom de la classe.
Format :
function __construct ( [参数] ) { ... ... }
Cela ne peut pas être appelé activement, donc. il est généralement utilisé pour effectuer certaines tâches d'initialisation utiles. Par exemple, les attributs appariés se voient attribuer des valeurs initiales lors de la création du
de l'objet.
<? //创建一个人类 class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //定义一个构造方法参数为姓名$name、性别$sex和年龄$age function __construct($name, $sex, $age) { //通过构造方法传进来的$name给成员属性$this->name赋初使值 $this->name=$name; //通过构造方法传进来的$sex给成员属性$this->sex赋初使值 $this->sex=$sex; //通过构造方法传进来的$age给成员属性$this->age赋初使值 $this->age=$age; }/ /这个人的说话方法 function say() { echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是: ".$this->age."<br>"; } } //通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 $p1=new Person(“张三”,”男”, 20); $p2=new Person(“李四”,”女”, 30); $p3=new Person(“王五”,”男”, 40); //下面访问$p1对象中的说话方法 $p1->say(); //下面访问$p2对象中的说话方法 $p2->say(); //下面访问$p3对象中的说话方法 $p3->say(); ?>
我的名字叫:张三性别:男我的年龄是:20 我的名字叫:李四性别:女我的年龄是:30 我的名字叫:王五性别:男我的年龄是:40
Destructeur :
L'opposé du constructeur est le destructeur. Le destructeur est un contenu nouvellement ajouté à PHP5. Il n'y a pas de destructeur dans PHP4.
Le destructeur vous permet d'effectuer certaines opérations ou de compléter certaines fonctions avant de détruire une classe, comme fermer des fichiers, publier des jeux de résultats, etc.
Le destructeur supprimera toutes les références à un objet ou Exécuté lorsque l'objet est explicitement détruit, c'est-à-dire que le destructeur est appelé avant que l'objet ne soit détruit
en mémoire. Semblable au nom du constructeur, le nom du destructeur d’une classe doit être __destruct(). La fonction destructeur
ne peut prendre aucun paramètre.
Format :
function __destruct ( ) { ... ... }
<? //创建一个人类 class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //定义一个构造方法参数为姓名$name、性别$sex和年龄$age function __construct($name, $sex, $age) { //通过构造方法传进来的$name给成员属性$this->name赋初使值 $this->name=$name; //通过构造方法传进来的$sex给成员属性$this->sex赋初使值 $this->sex=$sex; //通过构造方法传进来的$age给成员属性$this->age赋初使值 $this->age=$age; } //这个人的说话方法 function say() { echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是: ".$this->age."<br>"; } //这是一个析构函数,在对象销毁前调用 function __destruct() { echo “再见”.$this->name.”<br>”; } //通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 $p1=new Person(“张三”,”男”, 20); $p2=new Person(“李四”,”女”, 30); $p3=new Person(“王五”,”男”, 40); //下面访问$p1对象中的说话方法 $p1->say(); //下面访问$p2对象中的说话方法 $p2->say(); //下面访问$p3对象中的说话方法 $p3->say(); ?>
我的名字叫:张三性别:男我的年龄是:20 我的名字叫:李四性别:女我的年龄是:30 我的名字叫:王五性别:男我的年龄是:40 再见张三 再见李四 再见王五