แนะนำตัว
ในคำศัพท์การเขียนโปรแกรมเชิงวัตถุ นวกรรมิกคือวิธีการที่กำหนดไว้ภายในคลาสที่ถูกเรียกโดยอัตโนมัติในเวลาที่สร้างวัตถุ วัตถุประสงค์ของวิธีการสร้างคือการเริ่มต้นวัตถุ ใน PHP วิธีการของชื่อพิเศษ __construct ทำหน้าที่เป็นตัวสร้าง
ไวยากรณ์
__construct ([ mixed $args = "" [, $... ]] ) : void
ตัวอย่างตัวสร้าง
ตัวอย่างนี้แสดงว่า Constructor ทำงานโดยอัตโนมัติเมื่อมีการประกาศอ็อบเจ็กต์
ตัวอย่าง
<?php
class myclass{
function __construct(){
echo "object initialized";
}
}
$obj=new myclass();
?> ผลลัพธ์
ซึ่งจะให้ผลลัพธ์ตามมา −
object initialized
ตัวสร้างพร้อมอาร์กิวเมนต์
คุณสมบัติคลาสเริ่มต้นโดยคอนสตรัคเตอร์พร้อมอาร์กิวเมนต์
ตัวอย่าง
<?php
class rectangle{
var $height;
var $width;
function __construct($arg1, $arg2){
$this->height=$arg1;
$this->width=$arg2;
}
function show(){
echo "Height=$this->height Width=$this->width";
}
}
$obj=new rectangle(10,20);
$obj->show();
?> ผลลัพธ์
ซึ่งจะให้ผลลัพธ์ตามมา −
Height=10 Width=20
ตัวสร้างในมรดก
หากคลาสพาเรนต์มีคอนสตรัคเตอร์ที่กำหนดไว้ ก็สามารถเรียกคลาสนั้นภายในคอนสตรัคเตอร์ของคลาสลูกโดย parent::__construct . อย่างไรก็ตาม หากคลาสลูกไม่ได้กำหนดคอนสตรัคเตอร์ คลาสนั้นจะสืบทอดมาจากคลาสฐาน
ตัวอย่าง
<?php
class a{
function __construct(){
echo "this is a constructor of base class\n";
}
}
class b extends a{
function __construct(){
parent::__construct();
echo "this a constructor class b\n";
}
}
class c extends a {
//
}
$a=new a();
$b=new b();
$c=new c();
?> ผลลัพธ์
ซึ่งจะให้ผลลัพธ์ตามมา −
this is a constructor of base class this is a constructor of base class this a constructor class b this is a constructor of base class
ตัวทำลาย
Destructor เป็นวิธีการโดยอัตโนมัติทันทีที่ตัวรวบรวมขยะพบครีบที่วัตถุนั้นไม่มีการอ้างอิงอีกต่อไป ใน PHP วิธีการ destructor มีชื่อว่า __destruct . ในระหว่างลำดับการปิดระบบด้วย วัตถุจะถูกทำลาย เมธอด Destructor ไม่รับอาร์กิวเมนต์ใดๆ และไม่ส่งคืนประเภทข้อมูลใดๆ
ตัวอย่าง
<?php
class myclass{
function __construct(){
echo "object is initialized\n";
}
function __destruct(){
echo "object is destroyed\n";
}
}
$obj=new myclass();
?> ผลลัพธ์
ซึ่งจะแสดงผลดังต่อไปนี้
object is initialized object is destroyed