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

คุณสมบัติและเมธอดสแตติก (Static Properties and Methods) ใน PHP

บทนำ

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

Static Properties (คุณสมบัติสแตติก)

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

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

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

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

คุณสมบัติสแตติกใดๆ ที่ประกาศใน parent class สามารถอ้างอิงได้ภายในเมธอดของ child class โดยใช้คีย์เวิร์ด parent พร้อม scope resolution operator

<?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(); ?>

Static Methods (เมธอดสแตติก)

เมื่อเมธอดถูกประกาศเป็น static ตัวแปร pseudo-variable $this จะไม่พร้อมใช้งานให้มัน ดังนั้น instance attributes ของคลาสไม่สามารถเข้าถึงได้ในมัน เมธอดสแตติกถูกเรียกโดยชื่อคลาสพร้อม scope resolution operator

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

ตัวอย่าง

<?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