diri vs. ini dalam php

diri vs. ini dalam php

PHP mendukung kelas dan konstruksi berorientasi objek lainnya. Fungsi dan variabel statis di kelas PHP tidak terkait dengan contoh spesifik kelas (dengan kata lain, suatu objek). Lihat perbedaan antara obyek Dan kelas.

Sebaliknya, fungsi dan variabel statis dikaitkan dengan definisi kelas itu sendiri. Dengan kata lain, semua contoh kelas berbagi variabel statis yang sama. Dalam konteks suatu metode (fungsi) dari suatu kelas, variabel dan fungsi statis diakses menggunakan diri sendiri::. Metode dan variabel lain digunakan dalam konteks suatu objek (instance) dari suatu kelas, menggunakan ini->.

Grafik perbandingan

Diri versus bagan perbandingan ini
diri sendiriini
Dapat digunakan dalam fungsi statis Ya TIDAK
Variabel dan metode kelas yang dapat diakses dengan diri sendiri:: $ this-> (perhatikan bahwa php> 5.3 memungkinkan penggunaan $ ini dengan variabel statis menggunakan $ this :: $ foo. $ this-> foo masih tidak ditentukan jika $ foo adalah var statis.)
Membutuhkan objek yang instanasi TIDAK Ya

self vs ini dalam php - contoh

kelas exampleClass public static $ foo; $ bar publik; fungsi publik regulerFunction () echo $ this-> bar;  public static function staticFunction () echo self :: $ foo;  fungsi statis publik anotherstatfn () self :: staticfunction ();  fungsi publik regulerFnUsingstaticvar () echo self :: $ foo;  // Catatan: pada php 5.3 menggunakan $ this :: $ bar alih -alih self :: $ bar diperbolehkan exampleClass :: $ foo = "hello"; $ obj = exampleClass baru (); $ obj-> bar = "dunia!"; exampleClass :: staticfunction (); /* mencetak halo* /$ obj-> regulerFunction (); /* mencetak dunia! */ 

Fungsi statis hanya dapat menggunakan variabel statis. Fungsi dan variabel statis dirujuk melalui diri sendiri::functionName () atau diri sendiri::Nama Variabel. Dalam contoh yang ditunjukkan di atas, variabel statis direferensikan dengan nama kelas (exampleClass :: $ foo) atau, dengan a diri sendiri:: (self :: $ foo) Saat digunakan dalam metode statis [bernama staticfunction ()] dari kelas.

Fungsi dan variabel reguler suatu kelas membutuhkan konteks objek untuk direferensikan. Mereka tidak bisa eksis tanpa konteks objek. Konteks objek disediakan oleh $ ini. Dalam contoh di atas, $ bar adalah variabel reguler dan karenanya direferensikan sebagai $ obj-> bar (dalam konteks objek dengan variabel OBJ) atau sebagai $ this-> bar (lagi dalam konteks objek dalam metode suatu objek).

diri sendiri tidak menggunakan sebelumnya $ Karena diri sendiri tidak berkonotasi variabel tetapi kelas membangun itu sendiri. $ ini apakah merujuk variabel tertentu sehingga memiliki sebelumnya $.