Memahami Ahli Statik dalam PHP

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.
Bila Menggunakan Ahli Statik
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.
Memanggil Kaedah Statik
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!
Memanggil Sifat Statik
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
Tiga Kata Kunci: diri::, ibu bapa::, dan statik::
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.
Contoh untuk Menunjukkan Perbezaan
Mari kita lihat bagaimana setiap kata kunci ini berkelakuan dalam program PHP dengan warisan.
Contoh 1: Menggunakan diri sendiri::
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."
Contoh 2: Menggunakan ibu bapa::
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."
Contoh 3: Menggunakan statik::
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."
Perbezaan Utama
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!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Clothoff.io
Penyingkiran pakaian AI
Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!
Artikel Panas
Alat panas
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Topik panas
Bagaimanakah saya tetap terkini dengan perkembangan php terkini dan amalan terbaik?
Jun 23, 2025 am 12:56 AM
Tostaycurrentwithphpdevelopmentsandbestpractices, followeyNewsssourcesLikePhp.netandphpweekly, engageWithCommunitiesonforumsandconference, keeptoolingupdatedandgraduallyAdoptNewFeatures, dan readribcoursourcourceSource
Apakah php, dan mengapa ia digunakan untuk pembangunan web?
Jun 23, 2025 am 12:55 AM
Phpbecamepopularforwebdevelopmentduetoitseaseoflearning, seamlessintegrationwithhtml, widespreadhostingsupport, andalargeecosystemincludingframeworkslikelaravelandcmsplatformsLikeWordPress.itexcelsinhandessubmissions
Bagaimana cara menetapkan zon waktu php?
Jun 25, 2025 am 01:00 AM
TosetTheRightTimeZoneinPhp, USEDATE_DEFAULT_TIMEZONE_SET () functionAtthestArtAfyourscriptwithavalididentifiersuchas'america/new_york'.1.usedate_default_timeSet ()
Bagaimanakah saya mengesahkan input pengguna dalam PHP untuk memastikan ia memenuhi kriteria tertentu?
Jun 22, 2025 am 01:00 AM
TOVALIDATEUSERIputInphp, UsEbuilt-InvalidationFunctionsLikeFilter_var () danFilter_Input (), applyRegularExpressionsforcustomformatssuchasususerorphonenumbers, checkdatatypesfornumericressplimeSpriceSprice, setLengthacheAngeAgeorpriceSprice, setLengthacheArpesenprice,
Apakah amalan terbaik untuk menulis kod PHP yang bersih dan boleh dipelihara?
Jun 24, 2025 am 12:53 AM
Kunci untuk menulis kod PHP yang bersih dan mudah dijaga terletak pada penamaan yang jelas, berikutan piawaian, struktur yang munasabah, menggunakan komen dan kesesuaian yang baik. 1. Gunakan pembolehubah, fungsi dan nama kelas yang jelas, seperti $ userData dan calculateToTalPrice (); 2. Ikuti gaya kod bersatu piawai PSR-12; 3. Pecahkan struktur kod mengikut tanggungjawab, dan aturnya menggunakan katalog MVC atau Laravel; 4. Elakkan kod gaya mi dan memecah logik ke dalam fungsi kecil dengan satu tanggungjawab; 5. Tambah komen pada mata utama dan tulis dokumen antara muka untuk menjelaskan parameter, pulangan nilai dan pengecualian; 6. Meningkatkan kebolehlihatan, mengguna pakai suntikan pergantungan, mengurangkan kaedah keadaan global dan statik. Amalan ini meningkatkan kualiti kod, kecekapan kerjasama dan kemudahan pasca penyelenggaraan.
Apakah Serialization Data dalam PHP (Serialize (), Unserialize ())?
Jun 22, 2025 am 01:03 AM
ThPhpFunctionserialize () andUnserialize () diselaraskanToConvertComplexDataStructructDestoresIntoStorasandabackagain.1.Serialize () C overtsdatalikeCarraysorObjectSrayStringContainingTyPeanStructureStructureStructureStructure.2.2Serialize ()
Bagaimana saya membenamkan kod php dalam fail html?
Jun 22, 2025 am 01:00 AM
Anda boleh membenamkan kod PHP ke dalam fail HTML, tetapi pastikan fail itu mempunyai lanjutan .php supaya pelayan dapat menghuraikannya dengan betul. Gunakan tag standard untuk membungkus kod PHP, masukkan kandungan dinamik di mana sahaja di HTML. Di samping itu, anda boleh menukar PHP dan HTML beberapa kali dalam fail yang sama untuk merealisasikan fungsi dinamik seperti rendering bersyarat. Pastikan anda memberi perhatian kepada konfigurasi pelayan dan ketepatan sintaks untuk mengelakkan masalah yang disebabkan oleh label pendek, kesilapan tanda petikan atau label akhir yang ditinggalkan.
Bagaimana saya melaksanakan pertanyaan SQL menggunakan php?
Jun 24, 2025 am 12:54 AM
Ya, youpanrunsqlqueriesusingphp, danTheProcessinvolveschoosingadatabaseextension, connectingTothedatabase, executingqueriSafely, andclosingconnectionswhendone.todothis, firstChoosebetweBetbeSquLiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpdob


