PHP 7.1 atau lebih baru (dirilis 2 Desember 2016)
Anda dapat secara eksplisit mendeklarasikan variabel yang ada null
dengan sintaks ini
function foo(?Type $t) {
}
ini akan menghasilkan
$this->foo(new Type()); // ok
$this->foo(null); // ok
$this->foo(); // error
Jadi, jika Anda menginginkan argumen opsional, Anda dapat mengikuti konvensi Type $t = null
sedangkan jika Anda perlu membuat argumen menerima keduanya null
dan tipenya, Anda dapat mengikuti contoh di atas.
Anda dapat membaca lebih lanjut di sini .
PHP 7.0 atau lebih tua
Anda harus menambahkan nilai default seperti
function foo(Type $t = null) {
}
Dengan begitu, Anda bisa memberikan nilai nol.
Ini didokumentasikan di bagian dalam manual tentang Deklarasi Jenis :
Deklarasi dapat dibuat untuk menerima NULL
nilai jika nilai default dari parameter diatur ke NULL
.
function foo(Type $t)
adalah hal yang SANGAT baik; lihat Referensi Null: Kesalahan Miliar DolarMulai dari PHP 7.1, tersedia tipe nullable , karena keduanya berfungsi mengembalikan tipe dan parameter. Tipe
?T
dapat memiliki nilai dari Tipe yang ditentukanT
, ataunull
.Jadi, fungsi Anda bisa terlihat seperti ini:
Segera setelah Anda dapat bekerja dengan PHP 7.1, notasi ini lebih disukai daripada
function foo(Type $t = null)
, karena masih memaksa pemanggil untuk secara eksplisit menentukan argumen untuk parameter$t
.sumber
Mencoba:
Lihat argumen fungsi PHP .
sumber
Seperti jawaban lain yang telah disebutkan, ini hanya mungkin jika Anda menetapkan
null
sebagai nilai default.Tetapi solusi berorientasi objek terbersih-tipe terbersih akan menjadi NullObject :
Pemakaian:
sumber
NullFoo
untuk menimpa metode abstrak, meskipun mereka tidak memiliki makna (menurut definisinull
).if (something is null)
cek, karena NullObject dimaksudkan untuk mencakup semua perilaku dari nilai yang tidak ada dan kolaborator luar tidak perlu tertarik pada apakah suatu objek tidak ada (null) atau tidak.