Pertimbangkan kode berikut, di mana setter sengaja rusak karena kesalahan pemrograman biasa yang telah saya buat nyata beberapa kali di masa lalu:
<?php
class TestClass {
private $testField;
function setField($newVal) {
$testField = $newVal;
// deliberately broken; should be `$this->testField = $newVal`
}
function getField() {
return $this->testField;
}
}
$testInstance = new TestClass();
$testInstance->setField("Hello world!");
// Actually prints nothing; getField() returns null
echo $testInstance->getField();
?>
Fakta bahwa saya menyatakan $testField
di bagian atas kelas membantu menyembunyikan kesalahan pemrograman itu dari saya. Jika saya tidak mendeklarasikan bidang, maka saya akan mendapatkan sesuatu yang mirip dengan peringatan berikut yang dicetak ke log kesalahan saya setelah memanggil skrip ini, yang berpotensi berguna untuk membantu debugging saya - terutama jika saya membuat kesalahan seperti ini di aplikasi dunia nyata yang besar dan rumit:
Pemberitahuan PHP: Properti tidak terdefinisi: TestClass :: $ testField di /var/www/test.php on line 13
Dengan deklarasi itu, tidak ada peringatan.
Mungkin saya kehilangan sesuatu, tetapi saya menyadari hanya dua alasan untuk mendeklarasikan bidang kelas di PHP: pertama, bahwa deklarasi bertindak sebagai dokumentasi, dan kedua, bahwa tanpa deklarasi, seseorang tidak dapat menggunakan private
dan protected
mengakses pengubah, yang merupakan bisa dibilang bermanfaat. Karena argumen yang terakhir tidak berlaku untuk bidang publik - menugaskan ke bidang yang tidak dideklarasikan dari suatu objek menjadikannya publik - menurut saya setidaknya saya harus mengomentari semua deklarasi bidang publik saya. Komentar akan memberikan nilai dokumentasi yang persis sama, tetapi saya akan mendapat manfaat dari peringatan jika saya mencoba membaca bidang yang tidak diinisialisasi.
Namun, setelah dipikirkan lebih lanjut, tampaknya tidak masuk akal untuk berhenti di situ. Karena dalam pengalaman saya mencoba membaca bidang yang tidak diinisialisasi adalah penyebab kesalahan yang jauh lebih umum daripada mencoba membaca secara tidak tepat atau memodifikasi bidang pribadi atau yang dilindungi (saya sudah melakukan yang sebelumnya beberapa kali dalam karir pemrograman singkat saya, tetapi tidak pernah yang terakhir ), bagi saya sepertinya mengomentari semua deklarasi lapangan - bukan hanya yang umum - akan menjadi praktik terbaik.
Yang membuat saya ragu adalah bahwa saya belum pernah melihat orang lain melakukannya dalam kode mereka. Kenapa tidak? Apakah ada manfaat untuk mendeklarasikan bidang kelas yang tidak saya ketahui? Atau bisakah saya memodifikasi konfigurasi PHP dengan beberapa cara untuk mengubah perilaku deklarasi lapangan sehingga saya bisa menggunakan deklarasi lapangan nyata dan masih mendapat manfaat dari peringatan "Properti tidak terdefinisi"? Atau ada hal lain yang saya lewatkan dalam analisis saya?
TRUE === $variable
untuk mencegah diri Anda menetapkan secara tidak sengaja alih-alih membandingkan.