ถ้าเคยเขียนโปรแกรม 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 มีไว้ทำอะไร! ลองนำไปใช้ดูนะ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น