แนะนำตัว
ในคำศัพท์การเขียนโปรแกรมเชิงวัตถุ นวกรรมิกคือวิธีการที่กำหนดไว้ภายในคลาสที่ถูกเรียกโดยอัตโนมัติในเวลาที่สร้างวัตถุ วัตถุประสงค์ของวิธีการสร้างคือการเริ่มต้นวัตถุ ใน 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