Heim > Artikel > Backend-Entwicklung > Ermöglicht die Unterscheidung zwischen Konstruktor und Destruktor in einer Klasse
Im vorherigen Artikel habe ich Ihnen „Wie instanziiere ich Objekte und greife auf Objektmitglieder in PHP zu?“ gebracht. “, in dem detailliert beschrieben wird, wie man Objekte instanziiert und auf Objektmitglieder zugreift. In diesem Artikel werfen wir einen Blick auf die Konstruktoren und Destruktoren in PHP. Ich hoffe, dass es für alle hilfreich ist!
Der Konstruktor in einer PHP-Klasse wird auch als Konstruktor bezeichnet. Wenn ein Objekt mit dem Schlüsselwort new instanziiert wird, kann es beim Erstellen des Objekts automatisch aufgerufen werden. Die entsprechende Funktion ist der Destruktor. Die Rolle des Destruktors ist genau das Gegenteil des Konstruktors. Der Destruktor kann Operationen ausführen, bevor das Objekt zerstört wird. Dann schauen wir uns diese beiden Funktionen zusammen an.
<strong><span style="font-size: 20px;">__construct()</span></strong>
<strong><span style="font-size: 20px;">__construct()</span></strong>: Konstruktor/Methode<strong><span style="font-size: 20px;">__construct()</span></strong>
:构造函数/方法
在PHP的类中,我们使用__construct()
作为类的构造函数,构造函数是当对象被创建时,类中被自动调用的第一个函数,并且一个类中只能存在一个构造函数,并且需要注意的是,如果构造函数中有参数的话,那么实例化也需要传入对应的参数。
构造函数创建的语法格式如下:
public function __construct(参数列表){ ... ... }
需要注意的是,其中的参数列表是可选的,不需要的时候可以省略。construct前面是两个下划线__
。
实例如下:
<?php class study{ public $study1, $study2, $study3,$study4; public function __construct($str1, $str2, $str3,$str4){ $this -> study1 = $str1; $this -> study2 = $str2; $this -> study3 = $str3; $this -> study4 = $str4; $this -> demo(); } public function demo(){ echo $this -> study1.'<br>'; echo $this -> study2.'<br>'; echo $this -> study3.'<br>'; echo $this -> study4.'<br>'; } } $object = new study('好好学习','天天向上','福如东海','寿比南山'); ?>
示例中的$this表示当前调用的对象。输出结果:
由上述结果,我们通过,我们通过__construct()
构造函数,就调用了类中创建的对象。
<strong><span style="font-size: 20px;">__destruct()</span></strong>
:析构函数/方法
刚才讲到的__construct()
构造函数,它会在对象被创建的时候调用,与之相对应的就是析构函数,析构函数的作用与构造函数相反,析构函数只有当对象从内存中删除之前才会被自动调用,在PHP中有垃圾回收机制,当对象不能被访问就会自动启动垃圾回收机制,析构函数就是垃圾回收对象前调用。
__destruct()
函数的语法格式如下:
public function __destruct(){ ... ... }
需要注意的是,与构造函数类似,destruct前面也是两个下划线__
;不同的是析构函数不能带有任何参数。
实例如下:
<?php class Website{ public $study1, $study2; public function __construct(){ echo '构造函数被调用了<br>'; } public function __destruct(){ echo '析构函数被调用了<br>'; } } $object = new Website(); echo '好好学习<br>'; echo '天天向上<br>'; ?>
输出结果:
由上述实例可以看出,构造函数与析构函数调用的时间不同,构造函数在对象被创建时自动调用,析构函数在对象被垃圾收集器收集前被调用。
<strong><span style="font-size: 20px;">$this</span></strong>
:当前对象
在PHP面对对象编程中,对象被创建之后,在对象中的每个成员方法里,都会存在一个特殊的对象引用“$this
”,与连接符->
__construct()
als Konstruktor der Klasse. Der Konstruktor ist, wenn das Objekt erstellt wird. Der erste Funktion, die automatisch in einer Klasse aufgerufen wird, und es kann nur einen Konstruktor in einer Klasse geben. Es ist zu beachten, dass bei Vorhandensein von Parametern im Konstruktor auch die entsprechenden Parameter zur Instanziierung übergeben werden müssen.
Das vom Konstruktor erstellte Syntaxformat lautet wie folgt:
$this -> 成员属性; $this -> 成员方法(参数列表);Es ist zu beachten, dass die Parameterliste optional ist und weggelassen werden kann, wenn sie nicht benötigt wird. Vor dem Konstrukt stehen zwei Unterstriche
__
. Das Beispiel sieht wie folgt aus: <?php class Website{ public $name; public function __construct($name){ $this -> name = $name; $this -> name(); } public function name(){ echo $this -> name; } } $object = new Website('好好学习'); ?>$this im Beispiel repräsentiert das aktuell aufgerufene Objekt. Ausgabeergebnis:
Basierend auf den obigen Ergebnissen haben wir den Konstruktor __construct()
übergeben, um das in der Klasse erstellte Objekt aufzurufen.
<strong><span style="max-width:90%">__destruct()</span></strong>
<strong><span style="font-size: 20px;">__destruct()</span></strong>: Destruktor/Methode🎜🎜Der gerade erwähnte __construct()
-Konstruktor wird aufgerufen, wenn das Objekt erstellt wird, entsprechend Es ist der Destruktor. Die Rolle des Der Destruktor ist das Gegenteil des Konstruktors. Der Destruktor wird nicht automatisch aufgerufen, wenn das Objekt aus dem Speicher gelöscht wird. Wenn auf das Objekt nicht zugegriffen werden kann, wird der Destruktor automatisch gestartet , der Destruktor wird vor der Garbage Collection von Objekten aufgerufen. 🎜🎜🎜__destruct()
Das Syntaxformat der Funktion ist wie folgt: 🎜rrreee🎜Es ist zu beachten, dass, ähnlich wie beim Konstruktor, auch vor destruct zwei Unterstriche stehen __ code>; der Unterschied ist: Der Destruktor kann keine Parameter annehmen. 🎜🎜🎜Das Beispiel sieht wie folgt aus: 🎜rrreee🎜Ausgabeergebnis: 🎜🎜🎜<img src="https://img.php.cn/upload/image/227/432/988/1635127650312688.png" title=" 1635127650312688.png " alt="Ermöglicht die Unterscheidung zwischen Konstruktor und Destruktor in einer Klasse">🎜🎜Wie aus den obigen Beispielen ersichtlich ist, werden der Konstruktor und der Destruktor zu unterschiedlichen Zeiten aufgerufen. Der Konstruktor wird automatisch aufgerufen, wenn das Objekt erstellt wird, und der Destruktor wird aufgerufen wann das Objekt vom Garbage Collector abgeholt wurde. 🎜🎜<code><strong><span style="max-width:90%">$this</span></strong>
: Aktuelles Objekt🎜🎜Bei der objektorientierten PHP-Programmierung gibt es nach der Erstellung des Objekts eine spezielle Objektreferenz „$this“ in jeder Mitgliedsmethode des Objekts code>“, wird in Verbindung mit dem Connector ->
verwendet und dient insbesondere dazu, den Zugriff zwischen internen Mitgliedern des Objekts zu vervollständigen. Ein Beispiel ist wie folgt: 🎜rrree🎜Wenn wir auf ein Mitgliedsattribut in einer Klasse zugreifen, müssen wir nur dem Attributnamen folgen. Es ist nicht erforderlich, das $-Zeichen hinzuzufügen, das nur in Objekten verwendet werden kann , es gibt kein $this. 🎜🎜Das Beispiel sieht wie folgt aus: 🎜🎜rrreee🎜Ausgabeergebnis: 🎜🎜🎜🎜🎜Bei Interesse können Sie auf „🎜PHP Video Tutorial🎜“ klicken, um mehr über PHP-Kenntnisse zu erfahren. 🎜
Das obige ist der detaillierte Inhalt vonErmöglicht die Unterscheidung zwischen Konstruktor und Destruktor in einer Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!