Instance vs. Statik: Menyahmistikan Ralat Permulaan Biasa
Dalam pembangunan perisian, kelas selalunya mengandungi kedua-dua contoh dan ahli statik. Ahli tika dikaitkan dengan tika individu kelas, manakala ahli statik dikongsi antara semua tika.
Apabila bekerja dengan ahli tika, adalah penting untuk memahami batasan pemula medan. Pemula medan digunakan untuk menetapkan nilai kepada medan contoh apabila tika dibuat. Walau bagaimanapun, seperti yang dinyatakan dalam mesej ralat "Pemula medan tidak boleh merujuk medan, kaedah atau sifat bukan statik," pemula medan tidak boleh merujuk ahli bukan statik.
Analisis Kod Asal
Kod yang anda berikan menunjukkan pengehadan ini. Kelas Perkhidmatan mengandungi repo medan contoh dan pemula medan yang cuba memanggil kaedah bukan statik GetDinner pada repo contoh. Ini menimbulkan ralat kerana pemula medan cuba mengakses ahli bukan statik sebelum tika itu dimulakan sepenuhnya.
Penyelesaian
Terdapat dua penyelesaian biasa untuk isu ini:
Amalan Terbaik
Kedua-dua penyelesaian adalah sah, tetapi pengamulaan pembina biasanya dianggap sebagai pilihan. pendekatan. Ini kerana ia memberikan lebih fleksibiliti dan membolehkan anda memulakan medan contoh lain seperti yang diperlukan.
Dengan mengelakkan penggunaan pemula medan untuk ahli bukan statik, anda boleh menghalang ralat pemulaan dan memastikan kod anda berfungsi seperti yang dimaksudkan .
Atas ialah kandungan terperinci Mengapa Pemula Medan Saya Tidak Boleh Mengakses Ahli Bukan Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!