diri vs. ini dalam php

diri vs. ini dalam php

PHP menyokong kelas dan pembinaan berorientasikan objek lain. Fungsi dan pembolehubah statik dalam kelas PHP tidak dikaitkan dengan mana -mana contoh kelas tertentu (dengan kata lain, objek). Lihat perbezaan antara objek dan kelas.

Sebaliknya, fungsi dan pembolehubah statik dikaitkan dengan definisi kelas itu sendiri. Dengan kata lain, semua contoh kelas berkongsi pemboleh ubah statik yang sama. Dalam konteks kaedah (fungsi) kelas, pembolehubah statik dan fungsi diakses menggunakan Diri ::. Kaedah dan pembolehubah lain digunakan dalam konteks objek (contoh) kelas, menggunakan ini->.

Carta Perbandingan

diri berbanding carta perbandingan ini
diriini
Boleh digunakan dalam fungsi statik Ya Tidak
pemboleh ubah kelas dan kaedah yang boleh diakses dengan Diri :: $ this-> (perhatikan bahawa php> 5.3 Membolehkan penggunaan $ ini dengan pembolehubah statik menggunakan $ ini :: $ foo. $ this-> foo masih akan ditentukan jika $ foo adalah var statik.)
Memerlukan objek instantiated Tidak Ya

diri vs ini dalam php - contoh

ExampleClass kelas public static $ foo; awam $ bar; fungsi awam biasaFunction () echo $ this-> bar;  fungsi statik awam staticFunction () echo self :: $ foo;  fungsi statik awam anotherstatfn () self :: staticFunction ();  fungsi awam secara tetapFnusingStaticVar () echo self :: $ foo;  // Nota: Sehingga Php 5.3 Menggunakan $ this :: $ bar bukan diri :: $ bar dibenarkan Explecleclass :: $ foo = "hello"; $ obj = exampleClass baru (); $ obj-> bar = "dunia!"; Expleclass :: staticFunction (); /* mencetak hello* /$ obj-> regularfunction (); /* cetak dunia! */ 

Fungsi statik hanya boleh menggunakan pembolehubah statik. Fungsi statik dan pembolehubah dirujuk melalui Diri ::fungsiName () atau Diri ::Variablename. Dalam contoh yang ditunjukkan di atas, pembolehubah statik dirujuk dengan nama kelas (contohnya :: $ foo) atau, dengan a Diri :: (self :: $ foo) Apabila digunakan dalam kaedah statik [Dinamakan StaticFunction ()] kelas.

Fungsi dan pembolehubah kelas secara berkala memerlukan konteks objek yang akan dirujuk. Mereka tidak dapat wujud tanpa konteks objek. Konteks objek disediakan oleh $ ini. Dalam contoh di atas, $ bar adalah pemboleh ubah biasa dan oleh itu ia dirujuk sebagai $ obj-> bar (dalam konteks objek dengan pembolehubah obj) atau sebagai $ this-> bar (sekali lagi dalam konteks objek dalam kaedah objek).

diri tidak menggunakan sebelumnya $ kerana diri tidak menyentuh pembolehubah tetapi kelas membina dirinya sendiri. $ ini merujuk pemboleh ubah tertentu sehingga mempunyai sebelumnya $.