Di PHP 5, apa perbedaan antara menggunakan const
dan static
?
Kapan masing-masing sesuai? Dan peran apa public
, protected
dan private
bermain - jika ada?
php
object
constants
class-design
static-members
Chris Jacob
sumber
sumber
self::$variable
variabel statis statis dan privat karena saya lebih suka membiarkan nama kelas disebutkan hanya sekali di dalam dirinya sendiri yang berada di awal kelas.$
?static $my_var = 10;
dalam definisistatic
variabel sangat berguna dalam lajang dan fungsi rekursif juga. Karena Anda DAPAT mengubah nilai tetapi variabel hanya akan diinisialisasi sekali. Lihat stackoverflow.com/questions/203336/... untuk penjelasan lebih lanjut cara membuat singleton. Bagi saya itu adalah beberapa situasi di mana saya lebih suka variabel statis.Satu hal terakhir yang harus dibuat adalah bahwa konst selalu statis dan publik. Ini berarti bahwa Anda dapat mengakses const dari dalam kelas seperti:
Dari luar kelas Anda akan mengaksesnya seperti ini:
sumber
Constant adalah konstanta, yaitu Anda tidak dapat mengubah nilainya setelah mendeklarasikan.
Variabel statis dapat diakses tanpa membuat instance kelas dan oleh karena itu dibagi antara semua instance kelas.
Juga, mungkin ada variabel lokal statis dalam suatu fungsi yang dideklarasikan hanya sekali (pada eksekusi pertama fungsi) dan dapat menyimpan nilainya antara panggilan fungsi, contoh:
sumber
Ketika berbicara tentang pewarisan kelas, Anda dapat membedakan antara konstanta atau variabel dalam cakupan yang berbeda dengan menggunakan
self
danstatic
kata-kata kunci. Lihat contoh ini yang menggambarkan cara mengakses apa:Dan kemudian lakukan:
atau:
Keluaran:
Dengan kata lain
self::
mengacu pada properti statis dan konstan dari lingkup yang sama di mana ia disebut (dalam hal iniPerson
superclass), sementarastatic::
akan mengakses properti dan konstan dari ruang lingkup dalam jangka waktu (jadi dalam kasus ini dalamPirate
subkelas).Baca lebih lanjut tentang pengikatan statis akhir di sini di php.net .
Periksa juga jawaban atas pertanyaan lain di sini dan di sini .
sumber
Mendeklarasikan metode atau properti kelas sebagai statis membuat mereka dapat diakses tanpa perlu instantiasi kelas.
Konstanta kelas sama seperti konstanta normal, konstanta tidak dapat diubah saat runtime. Ini juga satu-satunya alasan Anda menggunakan const.
Pribadi, publik, dan terlindungi adalah pengubah akses yang menjelaskan siapa yang dapat mengakses parameter / metode mana.
Publik berarti semua objek lain mendapat akses. Pribadi berarti bahwa hanya kelas instantiated yang mendapatkan akses. Dilindungi berarti bahwa kelas instantiated dan kelas turunan mendapat akses.
sumber
Inilah hal-hal yang saya pelajari sejauh ini tentang anggota statis, variabel konstan dan pengubah akses (pribadi, publik, dan terlindungi). Konstan
Definisi
Seperti namanya, nilai variabel konstan tidak dapat diubah. Konstanta berbeda dari variabel normal karena Anda tidak menggunakan simbol $ untuk mendeklarasikan atau menggunakannya.
Nilai harus berupa ekspresi konstan, bukan (misalnya) variabel, properti, hasil operasi matematika, atau pemanggilan fungsi.
Menyatakan konstanta dalam php
Lingkup Constant bersifat global dan dapat diakses menggunakan kata kunci mandiri
Statis
Definisi
Kata kunci statis dapat digunakan untuk mendeklarasikan kelas, fungsi anggota, atau variabel. Anggota statis dalam suatu kelas bersifat global dapat diakses menggunakan kata kunci mandiri juga. Mendeklarasikan properti atau metode kelas sebagai statis membuat mereka dapat diakses tanpa memerlukan instantiasi kelas. . Properti yang dideklarasikan sebagai statis tidak dapat diakses dengan objek kelas yang dipakai (meskipun metode statis bisa). Jika tidak ada pernyataan visibilitas (publik, pribadi, dilindungi) yang digunakan, maka properti atau metode akan diperlakukan seolah-olah dinyatakan sebagai publik. Karena metode statis dapat dipanggil tanpa turunan dari objek yang dibuat.
Contoh properti statis
Mengakses contoh properti dan fungsi statis
Publik, pribadi, dilindungi (pengubah akses AKA)
Sebelum membaca definisi di bawah ini, bacalah Artikel tentang Enkapsulasi ini. Ini akan membantu Anda memahami konsep ini lebih dalam
Tautan 1 wikipedia
Tautan titik tutorial tentang enkapsulasi
Definisi
Menggunakan kata kunci pribadi, publik, dan terlindungi Anda dapat mengontrol akses ke anggota di kelas. Anggota kelas menyatakan publik dapat diakses di mana saja. Anggota yang dinyatakan dilindungi hanya dapat diakses di dalam kelas itu sendiri dan oleh kelas yang diwarisi dan orang tua. Anggota yang dideklarasikan sebagai pribadi hanya dapat diakses oleh kelas yang mendefinisikan anggota.
Contoh
Mengakses contoh publik, pribadi dan anggota yang dilindungi
Untuk info lebih lanjut baca dokumentasi php ini tentang visibilitas Visibilitas Php Doc
Referensi: php.net
Saya harap Anda mengerti konsepnya. Terima kasih telah membaca :) :) Selamat mencoba
sumber
Jadi, rekap pada @Matt jawaban yang bagus:
jika properti yang Anda butuhkan tidak boleh diubah, maka konstanta adalah pilihan yang tepat
jika properti yang Anda butuhkan diizinkan untuk diubah, gunakan yang statis
Contoh:
Sunting: Penting untuk dicatat bahwa PHP 7.1.0 memperkenalkan dukungan untuk menentukan visibilitas konstanta kelas .
sumber