แสดงบทความที่มีป้ายกำกับ function แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ function แสดงบทความทั้งหมด

วันจันทร์ที่ 17 กุมภาพันธ์ พ.ศ. 2568

[PHP] การใช้ Constructor และ Destructor ในการเขียนโปรแกรม OOP (Object-Oriented Programming)

    การใช้ Constructor และ Destructor ในการเขียนโปรแกรม OOP (Object-Oriented Programming) ใน PHP เป็นหัวข้อที่สำคัญอย่างยิ่งในการสร้างและจัดการออบเจ็กต์ภายในคลาส ในบทความนี้ เราจะพูดถึงทั้ง Constructor และ Destructor ในการเขียน PHP โดยใช้ภาษาที่เข้าใจง่าย และค่อยๆ เจาะลึกไปถึงรายละเอียดเพื่อให้มือใหม่ที่กำลังศึกษาการเขียนโปรแกรม OOP ใน PHP สามารถเข้าใจการทำงานของทั้งสองฟังก์ชันนี้ได้ดีขึ้น

1. รู้จักกับ Constructor และ Destructor

ก่อนที่เราจะไปลึกในเรื่องของ Constructor และ Destructor มาทำความเข้าใจพื้นฐานของคำสองคำนี้กันก่อน

  • Constructor (คอนสตรัคเตอร์): ใน OOP, Constructor คือฟังก์ชันพิเศษที่ถูกเรียกใช้โดยอัตโนมัติเมื่อมีการสร้างออบเจ็กต์จากคลาสนั้นๆ หรือกล่าวง่ายๆ ว่ามันคือฟังก์ชันที่ใช้สำหรับการตั้งค่าหรือการกำหนดค่าตั้งต้นให้กับออบเจ็กต์ที่ถูกสร้างขึ้น
  • Destructor (ดีสทรัคเตอร์): ในทางตรงกันข้าม, Destructor คือฟังก์ชันที่ถูกเรียกใช้เมื่อออบเจ็กต์จะถูกทำลายหรือไม่สามารถใช้งานได้อีกต่อไป โดยมันจะทำหน้าที่จัดการทรัพยากรที่อาจยังคงอยู่ เช่น การปิดการเชื่อมต่อฐานข้อมูล หรือการทำความสะอาดหน่วยความจำ

2. การสร้าง Constructor ใน PHP

    การสร้าง Constructor ใน PHP จะใช้ชื่อฟังก์ชันเป็น __construct โดยการใช้ double underscore (__) นำหน้าชื่อฟังก์ชันเป็นสิ่งที่ทำให้ Constructor เป็นฟังก์ชันพิเศษที่มีคุณสมบัติการทำงานที่ไม่เหมือนกับฟังก์ชันทั่วไป

ตัวอย่างโค้ด PHP สำหรับการสร้าง Constructor:

<?php
class Car {
    // Properties
    public $brand;
    public $model;
    public $year;

    // Constructor
    public function __construct($brand, $model, $year) {
        $this->brand = $brand;
        $this->model = $model;
        $this->year = $year;
    }

    // Method to display car information
    public function displayInfo() {
        echo "Car: $this->brand $this->model, Year: $this->year\n";
    }
}

// Creating an object of the Car class
$car1 = new Car("Toyota", "Corolla", 2020);
$car1->displayInfo();  // Output: Car: Toyota Corolla, Year: 2020
?>

ในตัวอย่างนี้, __construct จะรับค่าพารามิเตอร์ 3 ตัว คือ $brand, $model, และ $year เพื่อกำหนดค่าต่างๆ ให้กับออบเจ็กต์ที่ถูกสร้างขึ้นจากคลาส Car เมื่อสร้างออบเจ็กต์ $car1 ขึ้นมา จะมีการส่งค่าเหล่านี้ไปยัง Constructor เพื่อกำหนดค่าให้กับคุณสมบัติของออบเจ็กต์นั้นๆ

3. การใช้ Constructor เพื่อกำหนดค่าเริ่มต้น

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

ตัวอย่าง:

<?php
class Person {
    public $name;
    public $age;

    // Constructor to initialize properties
    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    // Method to display person info
    public function displayPerson() {
        echo "Name: $this->name, Age: $this->age\n";
    }
}

// Creating a new object
$person1 = new Person("John", 25);
$person1->displayPerson(); // Output: Name: John, Age: 25
?>

ในตัวอย่างนี้, เมื่อเราสร้างออบเจ็กต์ $person1 ของคลาส Person, เราต้องส่งค่าพารามิเตอร์ไปที่ Constructor เพื่อกำหนดชื่อและอายุของบุคคลนั้นให้กับออบเจ็กต์

4. การใช้ Default Values ใน Constructor

บางครั้งเราอาจไม่ต้องการให้พารามิเตอร์ที่ส่งเข้า Constructor เป็นค่าบังคับทุกครั้งที่สร้างออบเจ็กต์ เราสามารถกำหนดค่าเริ่มต้น (default value) ให้กับพารามิเตอร์ใน Constructor ได้

ตัวอย่าง:

<?php
class Book {
    public $title;
    public $author;

    // Constructor with default values
    public function __construct($title = "Unknown Title", $author = "Unknown Author") {
        $this->title = $title;
        $this->author = $author;
    }

    // Method to display book info
    public function displayBook() {
        echo "Title: $this->title, Author: $this->author\n";
    }
}

// Creating objects with and without parameters
$book1 = new Book("1984", "George Orwell");
$book1->displayBook();  // Output: Title: 1984, Author: George Orwell

$book2 = new Book();
$book2->displayBook();  // Output: Title: Unknown Title, Author: Unknown Author
?>

ในตัวอย่างนี้, เราได้กำหนดค่าพื้นฐานให้กับพารามิเตอร์ $title และ $author ซึ่งหมายความว่า ถ้าเราไม่ส่งค่าพารามิเตอร์เข้าไปในตอนที่สร้างออบเจ็กต์ ค่าพื้นฐานเหล่านี้จะถูกใช้

5. Destructor ใน PHP

เมื่อพูดถึง Destructor, มันจะทำงานตรงข้ามกับ Constructor โดยที่ Destructor จะถูกเรียกเมื่อออบเจ็กต์ถูกทำลายหรือไม่สามารถใช้งานได้อีกต่อไป เช่น เมื่อออบเจ็กต์ไม่ได้ถูกใช้งานหรือเมื่อหมดอายุการใช้งาน

ใน PHP, Destructor จะถูกกำหนดด้วยฟังก์ชันชื่อว่า __destruct โดยที่ไม่ต้องมีการรับพารามิเตอร์ใดๆ

ตัวอย่างการใช้ Destructor:

<?php
class DatabaseConnection {
    public $connection;

    // Constructor to initialize connection
    public function __construct($host, $username, $password) {
        $this->connection = new mysqli($host, $username, $password);
        if ($this->connection->connect_error) {
            die("Connection failed: " . $this->connection->connect_error);
        }
        echo "Connected successfully\n";
    }

    // Destructor to close connection
    public function __destruct() {
        $this->connection->close();
        echo "Connection closed\n";
    }
}

// Creating an object
$db = new DatabaseConnection("localhost", "root", "password");

// When the script ends, the destructor is automatically called to close the connection
?>

ในตัวอย่างนี้, __destruct จะทำหน้าที่ปิดการเชื่อมต่อฐานข้อมูลเมื่อออบเจ็กต์ DatabaseConnection ไม่ได้ถูกใช้งานอีกต่อไป ตัวอย่างนี้แสดงให้เห็นถึงการจัดการทรัพยากรอย่างเหมาะสมด้วย Destructor

6. ความสำคัญของ Constructor และ Destructor

การใช้ Constructor และ Destructor ช่วยให้การจัดการออบเจ็กต์เป็นไปได้อย่างมีประสิทธิภาพ ซึ่งช่วยให้โค้ดของเราสะอาดและดูแลรักษาง่าย นอกจากนี้ยังช่วยให้เราสามารถตั้งค่าหรือทำความสะอาดทรัพยากรต่างๆ ที่เกี่ยวข้องกับออบเจ็กต์ได้โดยอัตโนมัติ


    ในบทความนี้, เราได้เรียนรู้เกี่ยวกับ Constructor และ Destructor ใน PHP ซึ่งเป็นฟังก์ชันที่ช่วยในการสร้างและทำลายออบเจ็กต์ พร้อมทั้งการกำหนดค่าเริ่มต้นและการจัดการทรัพยากรของออบเจ็กต์ โดยใช้ฟังก์ชันเหล่านี้ในการสร้างโค้ดที่สามารถจัดการได้ง่ายและมีประสิทธิภาพมากขึ้น

ไม่ว่าจะเป็นการสร้างออบเจ็กต์หรือการทำความสะอาดหลังจากใช้งานเสร็จ, Constructor และ Destructor เป็นเครื่องมือสำคัญที่ทุกคนควรเข้าใจและนำไปใช้ในการพัฒนาโปรแกรม PHP ตามแนวทาง OOP

วันอาทิตย์ที่ 16 กุมภาพันธ์ พ.ศ. 2568

[PHP] การใช้ Static ใน PHP แบบเข้าใจง่าย

ถ้าเคยเขียนโปรแกรม OOP ใน PHP มาก่อน คงเคยเห็นหรือได้ยินคำว่า static ใช่ไหม? แต่ static มันคืออะไร และใช้ยังไง? วันนี้เรามาดูกันแบบเข้าใจง่าย ๆ กันเลย!

Static คืออะไร?

static เป็นคีย์เวิร์ดที่ใช้กำหนดว่า ตัวแปรหรือเมทอดในคลาสสามารถเรียกใช้ได้โดยไม่ต้องสร้างอ็อบเจกต์ (Object) ซึ่งต่างจากปกติที่ต้อง new ก่อน

ง่าย ๆ ก็คือ มันเป็นของ คลาส ไม่ใช่ของ อ็อบเจกต์ นั่นเอง

ตัวอย่างการใช้ Static

<?php
class MathHelper {
    public static $pi = 3.14159;

    public static function square($number) {
        return $number * $number;
    }
}

// เรียกใช้ static property
echo MathHelper::$pi; // แสดงค่า 3.14159

// เรียกใช้ static method
echo MathHelper::square(4); // แสดงค่า 16
?>

อธิบายโค้ดง่าย ๆ

  • public static $pi เป็นตัวแปรที่สามารถเรียกใช้ได้โดยตรงจากชื่อคลาส MathHelper::$pi
  • public static function square($number) เป็นฟังก์ชันที่สามารถเรียกใช้ได้โดยตรงจากคลาส MathHelper::square(4)

เปรียบเทียบ Static กับ Non-Static

ปกติแล้ว ถ้าเราไม่ใช้ static เราต้องสร้างอ็อบเจกต์ก่อนถึงจะใช้งานได้

<?php
class MathHelper {
    public $pi = 3.14159;
    public function square($number) {
        return $number * $number;
    }
}

$math = new MathHelper();
echo $math->pi; // ต้องเรียกใช้ผ่านอ็อบเจกต์
?>

แต่ถ้าใช้ static เราก็เรียกได้เลยโดยไม่ต้อง new

Static กับ self:: และ parent::

เมื่ออยู่ในคลาสเดียวกัน ถ้าจะอ้างถึงตัวแปรหรือเมทอดที่เป็น static เราจะใช้ self::

<?php
class Test {
    public static function hello() {
        return "Hello, Static!";
    }
    public static function callHello() {
        return self::hello(); // ใช้ self:: เรียกเมทอด static
    }
}

echo Test::callHello(); // แสดงผล "Hello, Static!"
?>

ถ้ามีการสืบทอด (extends) และต้องการอ้างถึงของคลาสแม่ ให้ใช้ parent::

<?php
class ParentClass {
    public static function sayHi() {
        return "Hi from Parent!";
    }
}

class ChildClass extends ParentClass {
    public static function greet() {
        return parent::sayHi(); // ใช้ parent:: อ้างถึงของคลาสแม่
    }
}

echo ChildClass::greet(); // แสดงผล "Hi from Parent!"
?>

เมื่อไหร่ควรใช้ Static?

  • เมื่อไม่ต้องการสร้างอ็อบเจกต์ แต่อยากเรียกใช้ข้อมูลหรือฟังก์ชันจากคลาส
  • เมื่อต้องการสร้าง Helper Class ที่มีแต่ฟังก์ชันช่วยเหลือต่าง ๆ
  • เมื่อต้องการเก็บค่าคงที่หรือค่าที่ใช้ร่วมกันทั่วโปรแกรม


สรุป

  • static ใช้กับตัวแปรและเมทอดในคลาสที่ต้องการเรียกใช้โดยไม่ต้องสร้างอ็อบเจกต์
  • ใช้ self:: ในคลาสเดียวกัน และ parent:: ถ้าเรียกจากคลาสลูก
  • มีประโยชน์มากกับ Helper Functions หรือค่าคงที่ที่ใช้ร่วมกันทั่วโปรแกรม


ทีนี้ก็รู้แล้วว่า static มีไว้ทำอะไร! ลองนำไปใช้ดูนะ

วันศุกร์ที่ 14 กุมภาพันธ์ พ.ศ. 2568

[PHP] การสร้าง Class อย่างง่ายใน PHP

การเขียนโปรแกรมเชิงวัตถุ (OOP) ใน PHP ทำให้การจัดการโค้ดสะดวกขึ้นมาก วันนี้เราจะมาดูกันว่าเราสามารถสร้างคลาส (Class) ใน PHP ได้อย่างไรแบบง่าย ๆ และเข้าใจได้เร็ว

Class คืออะไร?

คิดซะว่า Class เป็นพิมพ์เขียว หรือแม่แบบ สำหรับสร้างวัตถุ (Object) ในโปรแกรมของเรา ซึ่งภายใน Class จะมีทั้ง คุณสมบัติ (Properties) และ พฤติกรรม (Methods)

เริ่มต้นสร้าง Class แบบง่าย

มาลองสร้าง Class กันเลย สมมติว่าเราจะสร้าง Class ที่ชื่อว่า Car เพื่อใช้จำลองรถยนต์คันหนึ่ง

<?php
class Car {
    public $brand; // คุณสมบัติของรถ (ยี่ห้อ)
    public $color; // สีของรถ

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

    public function showInfo() {
        echo "รถยี่ห้อ $this->brand สี $this->color";
    }
}

// ใช้งาน Class
$myCar = new Car("Toyota", "แดง");
$myCar->showInfo(); // แสดงผล: รถยี่ห้อ Toyota สี แดง
?>

อธิบายโค้ดแบบง่าย ๆ

  • class Car - เราสร้างคลาสชื่อ Car
  • public $brand; และ public $color; - เป็นตัวแปรที่ใช้เก็บคุณสมบัติของรถ
  • __construct($brand, $color) - เป็นฟังก์ชันพิเศษที่ถูกเรียกใช้อัตโนมัติเมื่อสร้างวัตถุ (Object)
  • showInfo() - เป็นเมทอดที่ใช้แสดงรายละเอียดของรถ

สร้างวัตถุ (Object) จาก Class

หลังจากสร้าง Class แล้ว เราสามารถสร้างวัตถุจากคลาสนั้นได้ด้วย new เช่น:

$car1 = new Car("Honda", "น้ำเงิน");
$car1->showInfo(); // รถยี่ห้อ Honda สี น้ำเงิน

สรุป

การสร้าง Class ใน PHP ไม่ได้ยากเลย! แค่กำหนดคุณสมบัติและพฤติกรรมที่เราต้องการ จากนั้นก็สร้างวัตถุขึ้นมาใช้งานได้ทันที หวังว่าบทความนี้จะช่วยให้คุณเข้าใจแนวคิดพื้นฐานของ OOP ใน PHP ได้ง่ายขึ้นนะ!

วันจันทร์ที่ 24 ตุลาคม พ.ศ. 2554

แนะนำเว็บเกี่ยวกับฟังก์ชั่น PHP

สำหรับผู้ที่สนใจศึกษาเกี่ยวกับการพัฒนาเว็บไซต์ด้วยภาษา PHP แล้วอยากรู้ว่า PHP มีฟังก์ชั่นอะไรบ้าง ทำงานอย่างไร สามารถดูได้ที่เว็บไซต์ http://www.function.in.th เป็นเว็บภาษาไทย ซึ่งได้ทำการรวบรวมฟั่งก์ชั่นต่างๆ ที่จำเป็นในการเขียนคำสั่ง และไม่ได้มีแต่ภาษา PHP อย่างเดียว ยังมี html css javascript jsp และอื่นๆ ผมไม่ได้จะโฆษณาให้เขาแต่ประการใด เพียงแต่ผมเห็นว่าเป็นเว็บที่มีประโยชน์และผมเองก็ได้ใช้ประโยชน์จากเว็บนี้เช่นกัน