Penyelesaian untuk Menghuraikan Isu dalam Definisi Harta Kelas dengan Ungkapan
Sintaks asas dalam PHP lazimnya mudah, tetapi kadangkala ia boleh menghadapi kesukaran apabila bekerja dengan sifat kelas. Cabaran biasa ialah membenarkan ungkapan di sebelah kanan tanda sama dalam definisi harta. Walau bagaimanapun, pendekatan ini boleh menyebabkan ralat penghuraian. Untuk mengatasi pengehadan ini, penyelesaian diperlukan untuk mengekalkan kebolehbacaan dan kebolehkembangan masa hadapan.
Isu ini timbul kerana PHP hanya membenarkan nilai primitif sebagai nilai lalai untuk pemalar atau sifat kelas. Ungkapan, sebaliknya, melibatkan tindakan dan tidak boleh digunakan dalam konteks ini. Untuk menangani perkara ini, kami boleh mempertimbangkan pendekatan berikut:
Memfaktorkan Semula Definisi Kelas:
Daripada mentakrifkan sifat secara langsung dengan ungkapan, kami memfaktorkan semula kelas dengan memperkenalkan tatasusunan terlindung statik $_types. Tatasusunan ini menyimpan pemetaan antara nama simbolik dan nilai berangkanya.
<code class="php">class SDK { static protected $_types = null; // Get the numerical value for a symbolic name static public function getType($type_name) { self::_init_types(); if (array_key_exists($type_name, self::$_types)) { return self::$_types[$type_name]; } else { throw new Exception("unknown type $type_name"); } } }</code>
Permulaan dan Penggunaan:
Apabila kelas dimulakan, kami menggunakan __construct() kaedah untuk mendapatkan semula nilai berangka daripada tatasusunan $_types dan menetapkannya kepada sifat yang diingini.
<code class="php">function __construct($fString = null) { if (is_null($fString)) { $fString = self::getType('STRING_NONE') & self::getType('STRING_HOSTS'); } var_dump($fString); }</code>
Contoh:
Untuk menggunakan pendekatan ini, kita boleh mencipta contoh kelas SDK:
<code class="php">$SDK = new SDK(SDK::getType('STRING_HOSTS'));</code>
Dengan menggunakan penyelesaian ini, kami mengekalkan kebolehbacaan dan kebolehkembangan kod kami sambil mengelakkan menghuraikan isu dengan ungkapan dalam definisi sifat kelas.
Atas ialah kandungan terperinci Apakah Penyelesaian untuk Menghuraikan Isu dalam Definisi Harta Kelas dengan Ungkapan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!