ใน PHP วิธีการอินสแตนซ์เป็นวิธีที่ดีกว่าวิธีแบบคงที่ อย่างไรก็ตาม ไม่ได้หมายความว่าเมธอดสแตติกไม่มีประโยชน์ แต่มีจุดประสงค์ที่แตกต่างและไม่เหมือนใคร เราจะพูดถึงการเปรียบเทียบระหว่างเมธอดแบบสแตติกและอินสแตนซ์ใน PHP
โปรดทราบว่าเมธอดอินสแตนซ์จะเชื่อมต่อกับอ็อบเจ็กต์ของคลาสเสมอ ในขณะที่เมธอดสแตติกเชื่อมต่อกับคลาสเสมอ
ขั้นแรกให้พูดถึงวิธีสแตติก วิธีการแบบคงที่ใน PHP จะเหมือนกับภาษาการเขียนโปรแกรมเชิงวัตถุอื่นๆ กรณีสำคัญสำหรับการใช้วิธีสแตติกใน PHP วิธีสแตติกจำเป็นต้องใช้เมื่อข้อมูลเฉพาะคงที่สำหรับทั้งคลาส โดยพื้นฐานแล้ว เมธอดแบบคงที่จะใช้เมื่อเข้าถึงเมธอดนั้นโดยไม่ได้รับความช่วยเหลือจากอ็อบเจกต์ของคลาสนั้น
ตัวอย่าง
<?php class Car{ static function getColor(){ return "blue"; } } echo (Car::getColor()); ?>
ผลลัพธ์:
blue
คำอธิบาย:
ตัวอย่างเช่น ลองนึกภาพในโปรแกรมด้านบนว่า โปรแกรมเมอร์บางคนกำลังสร้างข้อมูลเกี่ยวกับรถยนต์ โดยที่คุณมีคลาส Car และมีฟังก์ชัน getColor() ที่กำหนดสีของรถ ดังนั้นแต่ละอ็อบเจ็กต์ที่ต้องการฟังก์ชัน getColor() คืนค่าสีที่คล้ายกันสำหรับวัตถุทั้งหมดของ Class Car ดังนั้นในกรณีนี้ เราจึงสามารถสร้างเมธอด getColor() ให้เป็นแบบคงที่ได้
มาพูดถึงวิธีการของอินสแตนซ์กัน เมธอดอินสแตนซ์จะใช้เมื่อไม่มีวิธีเรียกเมธอดโดยไม่สร้างอ็อบเจ็กต์ นอกจากนี้ ทุกครั้งที่เมธอดต้องการโต้ตอบกับคุณสมบัติของคลาส เราจำเป็นต้องมีเมธอดของอินสแตนซ์
ตัวอย่าง
มาแสดงกรณีข้างต้นด้วยตัวอย่าง:
<?php class Employee{ private $empname; function setEmpname($empname) { $this->empname = $empname; } function getEmpname() { return $this -> empname; } } $obj = new Employee; $obj -> setEmpname("Alex"); echo $obj -> getName(); ?>
ผลลัพธ์:
Alex
คำอธิบาย:
พิจารณาคลาส Employee ที่ setEmpname() อ่านชื่อ Employeename และ getEmpname() ซึ่งส่งคืนชื่อ Employee ในกรณีนี้ ชื่อพนักงานแต่ละคนไม่เหมือนกัน เราจึงไม่สามารถประกาศเมธอด getEmpname() หรือ setEmploye() ให้เป็นสแตติกได้ เนื่องจากทุกครั้งที่เมธอดเหล่านี้โต้ตอบกับตัวแปร "$empname"