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

คุณสมบัติและวิธีการคงที่ของ PHP


แนะนำตัว

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

คุณสมบัติคงที่

ในการเข้าถึงคุณสมบัติสแตติกจากคลาสภายนอก เราจำเป็นต้องใช้ตัวดำเนินการแก้ไขขอบเขต (::) พร้อมกับชื่อของคลาส ตัวแปรสตริงที่ประเมินชื่อคลาสยังสามารถระบุคุณสมบัติสแตติกได้

<?php
class testclass{
   static $name="test";
}
echo testclass::$name;
$var="testclass";
echo $var::$name;
?>

ในการใช้คุณสมบัติคงที่ภายในวิธีการใด ๆ ของคลาสเดียวกัน ให้ใช้ ตนเอง คีย์เวิร์ดแทน -> โอเปอเรเตอร์ที่ใช้สำหรับเข้าถึงคุณสมบัติของอินสแตนซ์

<?php
class testclass{
   static $name="test";
   public function test(){
      echo self::$name;
   }
}
$obj=new testclass();
$obj->test();
?>

คุณสมบัติสแตติกใดๆ ที่ประกาศในคลาสพาเรนต์สามารถอ้างถึงภายในเมธอดคลาสย่อยได้โดยใช้ พาเรนต์ คำหลักพร้อมกับตัวดำเนินการความละเอียดขอบเขต

<?php
class testclass{
   static $name="test";
   public function test(){
      echo self::$name;
   }
}
class myclass extends testclass{
   public function mytest(){
      echo parent::$name;
   }
}
$obj=new myclass();
$obj->mytest();
?>

วิธีการคงที่

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

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

ตัวอย่าง

<?php
class testclass{
   static $count=0;
   function __construct(){
      self::$count++;
   }
   static function showcount(){
      echo "count = " . self::$count;
   }
}
$a=new testclass();
$b=new testclass();
$c=new testclass();
testclass::showcount();
?>

ผลลัพธ์

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

count = 3