メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

$this Keyword: การอ้างอิง Object ตัวเอง

บทความนี้อธิบายถึง `$this` keyword ใน PHP ซึ่งใช้ภายใน class เพื่ออ้างอิงถึง object ที่กำลังถูกใช้งานอยู่ ทำให้สามารถเข้าถึงและจัดการ properties และ methods ของ...

$this Keyword: การอ้างอิง Object ตัวเอง

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

ความหมายของ $this

`$this` เป็น Keyword พิเศษใน PHP ที่ใช้ภายใน Class เพื่ออ้างอิงถึง Object ที่กำลังถูกใช้งานอยู่ (the current object) พูดง่ายๆ คือ `$this` หมายถึง "Object นี้" นั่นเอง เมื่อเราสร้าง Object จาก Class และเรียกใช้ Method ใดๆ ภายใน Object นั้น `$this` จะอ้างอิงถึง Object ที่ถูกสร้างขึ้นมานั้น

ลองนึกภาพว่า Class คือพิมพ์เขียวของบ้าน และ Object คือบ้านที่สร้างขึ้นตามพิมพ์เขียวนั้น `$this` ก็เหมือนกับป้ายที่ติดอยู่หน้าบ้านแต่ละหลัง ซึ่งบอกว่า "นี่คือบ้านหลังนี้"

การใช้งาน $this

เราใช้ `$this` เพื่อเข้าถึง Properties และ Methods ภายใน Object ตัวเอง

การเข้าถึง Properties

ในการเข้าถึง Property ภายใน Object เราจะใช้ `$this->property_name` โดยที่ `property_name` คือชื่อของ Property ที่เราต้องการเข้าถึง

<?php

class Person {
  public $name;
  public $age;

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

  public function introduce() {
    echo "สวัสดีครับ ผมชื่อ " . $this->name . " อายุ " . $this->age . " ปี";
  }
}

$person = new Person("สมชาย", 30);
$person->introduce(); // แสดงผล: สวัสดีครับ ผมชื่อ สมชาย อายุ 30 ปี

?>

ในตัวอย่างนี้ `$this->name` และ `$this->age` ใน Method `introduce()` อ้างอิงถึง Properties `name` และ `age` ของ Object `$person` ที่ถูกสร้างขึ้น

การเรียกใช้ Methods

ในการเรียกใช้ Method ภายใน Object เราจะใช้ `$this->method_name()` โดยที่ `method_name` คือชื่อของ Method ที่เราต้องการเรียกใช้

<?php

class Calculator {
  public function add($num1, $num2) {
    return $num1 + $num2;
  }

  public function calculateSum($num1, $num2) {
    $sum = $this->add($num1, $num2);
    echo "ผลรวมคือ: " . $sum;
  }
}

$calculator = new Calculator();
$calculator->calculateSum(5, 3); // แสดงผล: ผลรวมคือ: 8

?>

ในตัวอย่างนี้ `$this->add($num1, $num2)` ใน Method `calculateSum()` เรียกใช้ Method `add()` ภายใน Object `$calculator` เอง

ตัวอย่างเพิ่มเติม: การอัพเดท Property

`$this` ยังมีประโยชน์ในการอัพเดทค่า Properties ภายใน Object ตัวเอง

<?php

class Counter {
  public $count = 0;

  public function increment() {
    $this->count++;
  }

  public function getCount() {
    return $this->count;
  }
}

$counter = new Counter();
echo "ค่าเริ่มต้น: " . $counter->getCount() . "<br>"; // แสดงผล: ค่าเริ่มต้น: 0

$counter->increment();
echo "ค่าหลังจากเพิ่ม: " . $counter->getCount() . "<br>"; // แสดงผล: ค่าหลังจากเพิ่ม: 1

?>

ในตัวอย่างนี้ `$this->count++` ใน Method `increment()` เพิ่มค่า Property `count` ของ Object `$counter` ขึ้นทีละ 1

ข้อควรระวังในการใช้ $this

  • `$this` สามารถใช้ได้ภายใน Class เท่านั้น ไม่สามารถใช้นอก Class ได้
  • `$this` จะอ้างอิงถึง Object ที่กำลังถูกใช้งานอยู่ ณ ขณะนั้น ดังนั้นค่าของ `$this` จะแตกต่างกันไปในแต่ละ Object
<?php

class MyClass {
  public $value;

  public function setValue($value) {
    $this->value = $value;
  }

  public function getValue() {
    return $this->value;
  }
}

$obj1 = new MyClass();
$obj2 = new MyClass();

$obj1->setValue(10);
$obj2->setValue(20);

echo "Value of obj1: " . $obj1->getValue() . "<br>"; // แสดงผล: Value of obj1: 10
echo "Value of obj2: " . $obj2->getValue() . "<br>"; // แสดงผล: Value of obj2: 20

?>

ในตัวอย่างนี้ `$this` ใน Object `$obj1` อ้างอิงถึง `$obj1` และ `$this` ใน Object `$obj2` อ้างอิงถึง `$obj2` ทำให้แต่ละ Object มีค่า Property `value` ที่แตกต่างกัน

สรุป

`$this` Keyword เป็นเครื่องมือที่สำคัญในการเขียนโปรแกรมเชิงวัตถุใน PHP ช่วยให้เราสามารถเข้าถึงและจัดการ Properties และ Methods ภายใน Object นั้นๆ ได้อย่างสะดวกและมีประสิทธิภาพ การเข้าใจการทำงานของ `$this` จะช่วยให้คุณเขียน Code OOP ได้อย่างคล่องแคล่วและสามารถสร้าง Application ที่ซับซ้อนได้ง่ายขึ้น ในบทต่อไป เราจะเรียนรู้เกี่ยวกับ Access Modifiers ซึ่งเป็นเครื่องมือที่ใช้ควบคุมการเข้าถึง Properties และ Methods ของ Class

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る