Saya melihat manualnya , tetapi sepertinya saya tidak dapat menemukan jawabannya.
Apa visibilitas default dalam PHP untuk metode tanpa deklarasi visibilitas? Apakah PHP memiliki visibilitas paket seperti di Java?
Misalnya, dalam kode berikut, apakah go()
publik atau pribadi?
class test {
function go() {
}
}
Alasan saya bertanya adalah bahwa saya telah melihat banyak kode konstruktor ditulis sebagai function __construct()
dan beberapa sebagai public function __construct()
. Apakah mereka setara?
php
oop
visibility
Yada
sumber
sumber
Default-nya adalah publik. Merupakan praktik yang baik untuk selalu memasukkannya, namun PHP4 mendukung kelas tanpa pengubah akses, jadi tidak umum untuk tidak melihat penggunaannya dalam kode lama.
Dan tidak, PHP tidak memiliki visibilitas paket, terutama karena sampai saat ini PHP tidak memiliki paket.
sumber
Standarnya adalah publik. Alasannya mungkin adalah kompatibilitas mundur karena kode lama mengharapkannya menjadi publik (itu akan berhenti berfungsi jika tidak publik).
sumber
Sumber
sumber
Jika tidak ada kata kunci visibilitas (
public
,private
atauprotected
) yang digunakan, metode akan menjadi publik . Namun, Anda tidak dapat mendefinisikan properti dengan cara ini. Untuk properti , Anda perlu menambahkan kata kunci visibilitas pada deklarasi.Untuk properti yang tidak dideklarasikan di kelas dan Anda menetapkan nilai padanya di dalam metode akan memiliki visibilitas publik.
sumber
function __construct()
danpublic function __construct()
berfungsi sebagai nama metode yang sama.Jika Anda tidak dapat menentukan awalan untuk nama metode, itu harus publik secara default.
sumber