Skip to main content

เนื้อหาภาษาไทย / Thai content

System guide Content reviewed

Constructor: การเริ่มต้น Object อย่างถูกต้อง

บทความนี้อธิบายถึง Constructor ใน PHP ซึ่งเป็น Method พิเศษชื่อ `__construct()` ที่ถูกเรียกใช้โดยอัตโนมัติเมื่อสร้าง Object ใหม่ โดยมีหน้าที่กำหนดค่าเริ่มต้นให้...

Constructor: การเริ่มต้น Object อย่างถูกต้อง

หลังจากที่เราได้เรียนรู้เกี่ยวกับการสร้าง Class และ Object รวมถึงการกำหนด Properties และ Methods แล้ว ในบทนี้เราจะมาทำความรู้จักกับ Constructor ซึ่งเป็น Method พิเศษที่มีหน้าที่ในการเริ่มต้น Object เมื่อมีการสร้างขึ้นมาใหม่

ความหมายของ Constructor

Constructor คือ Method พิเศษที่ถูกเรียกใช้งานโดยอัตโนมัติเมื่อมีการสร้าง Object ใหม่จาก Class นั้นๆ หน้าที่หลักของ Constructor คือการกำหนดค่าเริ่มต้นให้กับ Properties ของ Object หรือทำการตั้งค่าอื่นๆ ที่จำเป็นเพื่อให้ Object อยู่ในสถานะที่พร้อมใช้งาน

ลองนึกภาพว่าคุณกำลังสร้างบ้าน Constructor ก็เหมือนกับพิธีวางศิลาฤกษ์ ที่เป็นการเริ่มต้นการก่อสร้างและกำหนดทิศทางของบ้านหลังนั้น

การสร้าง Constructor

ใน PHP, Constructor จะถูกสร้างโดยการกำหนด Method ที่มีชื่อว่า __construct() (มีขีดล่างสองตัวนำหน้า) ภายใน Class เมื่อมีการสร้าง Object ใหม่ PHP จะตรวจสอบว่ามี Method __construct() หรือไม่ ถ้ามีก็จะเรียกใช้งาน Method นี้

รูปแบบการสร้าง Constructor:

class MyClass {
  public function __construct() {
    // โค้ดที่ต้องการให้ทำงานเมื่อสร้าง Object
  }
}

ตัวอย่าง:

class Person {
  public $name;
  public $age;

  public function __construct() {
    $this->name = "Unknown";
    $this->age = 0;
  }
}

$person = new Person();
echo $person->name; // Output: Unknown
echo $person->age;  // Output: 0

จากตัวอย่างข้างต้น Constructor ของ Class Person จะกำหนดค่าเริ่มต้นให้กับ Properties $name เป็น "Unknown" และ $age เป็น 0 เมื่อเราสร้าง Object $person ขึ้นมา Properties เหล่านี้ก็จะมีค่าตามที่กำหนดไว้ใน Constructor

การใช้งาน Constructor

Constructor ไม่ได้มีไว้แค่กำหนดค่าเริ่มต้นแบบตายตัว เรายังสามารถส่งค่า Parameters เข้าไปใน Constructor เพื่อให้ Object มีค่าเริ่มต้นที่แตกต่างกันไปตามข้อมูลที่ได้รับ

ตัวอย่าง:

class Person {
  public $name;
  public $age;

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

$person1 = new Person("Alice", 30);
echo $person1->name; // Output: Alice
echo $person1->age;  // Output: 30

$person2 = new Person("Bob", 25);
echo $person2->name; // Output: Bob
echo $person2->age;  // Output: 25

ในตัวอย่างนี้ Constructor รับ Parameters $name และ $age เมื่อเราสร้าง Object $person1 และ $person2 เราสามารถส่งชื่อและอายุเข้าไปได้ ทำให้ Object แต่ละตัวมีค่า Properties ที่แตกต่างกัน

Type Hinting ใน Constructor:

เราสามารถใช้ Type Hinting ใน Parameters ของ Constructor ได้เช่นเดียวกับ Methods ทั่วไป เพื่อกำหนดประเภทข้อมูลที่ Constructor คาดหวัง

class Product {
  public string $name;
  public float $price;

  public function __construct(string $name, float $price) {
    $this->name = $name;
    $this->price = $price;
  }
}

$product = new Product("Laptop", 1200.50);
echo $product->name;  // Output: Laptop
echo $product->price; // Output: 1200.5

ในตัวอย่างนี้ เรากำหนดว่า Parameter $name ต้องเป็น String และ $price ต้องเป็น Float ถ้าเราพยายามส่งค่าประเภทอื่นเข้าไป PHP จะแสดงข้อผิดพลาด

Constructor Overloading (PHP ไม่รองรับโดยตรง)

ในภาษาโปรแกรมมิ่งบางภาษา (เช่น Java) Constructor Overloading เป็นการสร้าง Constructor หลายตัวที่มี Parameters แตกต่างกัน เพื่อให้สามารถสร้าง Object ได้หลายรูปแบบ แต่ PHP ไม่รองรับ Constructor Overloading โดยตรง

ใน PHP เราสามารถเลียนแบบ Constructor Overloading ได้โดยการกำหนด Default Values ให้กับ Parameters ของ Constructor

class User {
  public $username;
  public $email;

  public function __construct(string $username = "guest", string $email = "") {
    $this->username = $username;
    $this->email = $email;
  }
}

$user1 = new User(); // $username = "guest", $email = ""
$user2 = new User("john.doe"); // $username = "john.doe", $email = ""
$user3 = new User("jane.doe", "jane.doe@example.com"); // $username = "jane.doe", $email = "jane.doe@example.com"

ในตัวอย่างนี้ Constructor ของ Class User มี Parameter $username และ $email โดย $username มี Default Value เป็น "guest" และ $email มี Default Value เป็น "" ทำให้เราสามารถสร้าง Object ได้ 3 รูปแบบ:

  • new User(): สร้าง User โดยใช้ Default Values
  • new User("john.doe"): สร้าง User โดยกำหนด Username แต่ใช้ Default Value สำหรับ Email
  • new User("jane.doe", "jane.doe@example.com"): สร้าง User โดยกำหนดทั้ง Username และ Email

สรุป

Constructor เป็น Method พิเศษที่สำคัญในการเริ่มต้น Object อย่างถูกต้อง ช่วยให้เราสามารถกำหนดค่าเริ่มต้นให้กับ Properties และทำการตั้งค่าอื่นๆ ที่จำเป็นเมื่อมีการสร้าง Object ใหม่ การใช้งาน Constructor อย่างถูกต้องจะช่วยให้ Code ของเรามีความยืดหยุ่นและง่ายต่อการบำรุงรักษา

ในบทต่อไป เราจะเรียนรู้เกี่ยวกับ $this Keyword ซึ่งเป็น Keyword ที่ใช้ในการอ้างอิง Object ตัวเองภายใน Class

Office.in.th Custom Service

Want to build or adapt a system from this structure?

Office.in.th designs and develops enterprise web applications, API integrations, and public- and private-sector management systems, with long-term support.

See our software development service