PHP Constructor and Destructor

ในเนื้อหานี้จะพูดถึงเรื่องฟังก์ชัน  __construct()  เป็นฟังก์ชันที่แรกที่จะดำเนินการโดยอัตโนมัติเมื่อมีการสร้างวัตถุจากคลาส และ ฟังก์ชัน __destruct() จะถูกเรียกใช้งานอัตโนมัติเมื่อสิ้นสุดสคริปต์ หรือเรียกได้ว่าเป็นฟังก์ชันที่ทำงานปิดท้ายนั่นเอง

  • การใช้ __construct() เริ่มต้นด้วย เครื่องหมายขีดล่าง 2 ตัว “__” ตามด้วย construct()
  • การใช้ __destruct() เริ่มต้นด้วย เครื่องหมายขีดล่าง 2 ตัว “__” ตามด้วย destruct() 

 

ตารางเปรียบเทียบความแตกต่าง Contructor และ Destructor

Constructor Destructor
  • ทำงานเป็นฟังก์ชั่นแรกโดยอัตโนมัติหลังจากมีการสร้างวัถตุใหม่ของคลาส
  • ทำงานเป็นฟังก์ชั่นสุดท้ายโดยอัตโนมัติเมื่อมีการสร้างวัตถุใหม่ของคลาส

 

ตัวอย่างที่ 1 Constructor

<?php

class Flower{

 public $name;
 public $color;

 function __construct($name, $color){
  $this->name = $name;
  $this->color = $color;
 }

 function getName(){
  return $this->name;
 }

 function getColor(){
  return $this->color;
 }
}

$rose = new Flower("กุหลาบ", "สีแดง");

echo $rose->getName()."<br>";
echo $rose->getColor();


?>

ไฟล์ที่ 1 การใช้งาน __construct()

จากไฟล์ที่ 1 มีการใช้ฟังก์ชัน __construct() เพื่อรับอาร์กิวเมนต์สำหรับกำหนดคุณสมบัติชื่อ และสีของวัตถที่ถูกสร้างขึ้นจากคลาส ซึ่งในการสร้างวัตถุบรรทัดที่ 22 ได้ทำการส่งพารามิเตอร์ ชื่อ และสีของวัตถุเข้าไปด้วย ทำให้จำนวนการเขียนโค้ดลดลง 

 

ตัวอย่างที่ 2 Destructor

<?php
class Fruit {
  // Properties
  var $name;
  var $color;

  // Methods
  function __construct($name, $color) {
    echo "1.Constructor<br>";
    $this->name = $name;
    $this->color = $color; 
  }
  
  function testBetween(){
   echo "2.ฟังก์ชั่นที่ทำงานระหว่าง Constructor และ Destructor<br>";
  }
  
  function __destruct() {
    echo "3.Destructor<br>";
    echo "The fruit is {$this->name} and the color is {$this->color}."; 
  }
}

$apple = new Fruit("Apple", "red");
$apple->testBetween();
?>

ไฟล์ที่ 2 __destructor()

 

 

หากคุณพบคำที่สะกดผิด เว้นวรรคไม่ถูกต้อง ฯ โปรดแจ้งให้เราทราบ โดยลากคลุม (highlight) ข้อความนั้น แล้วกด Ctrl + Enter

ไม่สามารถคัดลอกเนื้อหานี้

Spelling error report

The following text will be sent to our editors: