Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

อธิบายวิธีแบบสแตติกและอินสแตนซ์ใน PHP


ใน 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"