Dalam PHP, ahli statik (kaedah dan sifat) tergolong dalam kelas itu sendiri, bukan kepada objek individu. Ini bermakna anda boleh mengaksesnya tanpa membuat contoh kelas. Ahli statik berguna apabila anda ingin berkongsi data atau fungsi merentas berbilang objek. PHP menyediakan tiga kata kunci untuk mengakses kaedah dan sifat statik: diri::, ibu bapa::, dan statik::. Masing-masing berfungsi secara berbeza, terutamanya apabila menggunakan warisan. Dalam artikel ini, kami akan menerangkan cara kata kunci ini berfungsi dan menunjukkan perbezaannya dengan contoh.
Pembolehubah Global: Sifat statik boleh digunakan sebagai pembolehubah global dalam kelas, boleh diakses oleh semua kejadian.
Kaedah Utiliti: Kaedah statik boleh menyediakan fungsi utiliti yang bebas daripada objek individu.
Pemalar Peringkat Kelas: Sifat statik boleh digunakan untuk menentukan pemalar peringkat kelas.
Corak Singleton: Kaedah dan sifat statik adalah penting untuk melaksanakan corak Singleton.
Untuk memanggil kaedah statik, anda menggunakan operator :: diikuti dengan nama kaedah. Berikut ialah contoh:
class MyClass { public static function greet() { echo "Hello, world!"; } } MyClass::greet(); // Output: Hello, world!
Untuk mengakses sifat statik, anda juga menggunakan operator :: diikuti dengan nama sifat. Berikut ialah contoh:
class MyClass { public static $count = 0; public static function incrementCount() { self::$count++; } } MyClass::incrementCount(); echo MyClass::$count; // Output: 1
diri sendiri::
Kata kunci diri:: merujuk kepada kelas di mana kod itu ditulis. Ia tidak mengambil kira warisan, bermakna jika kelas kanak-kanak mengatasi kaedah atau harta statik, self:: masih akan merujuk kepada kelas induk tempat kod itu ditakrifkan.
ibu bapa::
Kata kunci induk:: digunakan untuk memanggil kaedah atau sifat statik daripada kelas induk terdekat. Ia memintas sebarang kaedah yang ditindih dalam kelas anak, memastikan kaedah atau harta ibu bapa digunakan.
statik::
Kata kunci statik:: berfungsi sama seperti diri::, tetapi ia menyumbang kepada pengikatan statik lewat. Ini bermakna jika kaedah atau sifat statik ditindih dalam kelas anak, static:: akan merujuk kepada kaedah atau sifat dalam kelas terbitan yang paling banyak, walaupun ia dipanggil daripada kelas induk.
Mari kita lihat bagaimana setiap kata kunci ini berkelakuan dalam program PHP dengan warisan.
class A { public static function sayHello() { return "Hello from A"; } public static function test() { return self::sayHello(); } } class B extends A { public static function sayHello() { return "Hello from B"; } } echo B::test(); // Output: "Hello from A"
Dalam contoh ini, self:: dalam kelas A merujuk kepada kaedah sayHello() dalam A. Walaupun kelas B mengatasi kaedah tersebut, self:: memanggil kaedah kelas induk, menghasilkan output "Hello dari A."
class A { public static function sayHello() { return "Hello from A"; } } class B extends A { public static function sayHello() { return parent::sayHello() . " and B"; } } echo B::sayHello(); // Output: "Hello from A and B"
Dalam contoh ini, kelas B memanggil ibu bapa::sayHello() untuk memasukkan mesej daripada kelas induk A dan kemudian menambahkan mesejnya sendiri. Outputnya ialah "Hello daripada A dan B."
class A { public static function sayHello() { return "Hello from A"; } public static function test() { return static::sayHello(); } } class B extends A { public static function sayHello() { return "Hello from B"; } } echo B::test(); // Output: "Hello from B"
Di sini, statik:: dalam kelas A merujuk kepada kaedah sayHello() dalam kelas paling banyak terbitan, iaitu B. Ini kerana statik:: membenarkan pengikatan statik lewat, dan kaedah dalam kelas B dipanggil, menghasilkan "Helo daripada B."
diri::: Merujuk kepada kelas di mana ia digunakan, mengabaikan warisan. Ini berguna apabila anda tidak mahu kaedah dalam kelas kanak-kanak menjejaskan kaedah yang dipanggil.
ibu bapa::: Secara khusus memanggil kaedah atau sifat daripada kelas induk, walaupun ia ditindih dalam kelas anak. Ia berguna apabila melanjutkan fungsi daripada kelas induk tetapi masih memerlukan akses kepada kaedah asal.
statik::: Mendayakan pengikatan statik lewat, bermakna ia merujuk kepada kaedah atau sifat dalam kelas terbitan paling banyak pada masa jalan, walaupun dipanggil daripada kelas induk. Ia berguna untuk situasi yang anda mahu tingkah laku disesuaikan bergantung pada kelas panggilan.
Memahami perbezaan antara diri::, ibu bapa::, dan statik:: membantu menulis kod PHP yang lebih mantap dan boleh diselenggara, terutamanya dalam sistem berorientasikan objek yang kompleks.
Atas ialah kandungan terperinci Memahami Ahli Statik dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!