Pemulaan Pembolehubah Statik dalam PHP
PHP memberikan cabaran apabila memulakan pembolehubah statik kerana ketidakupayaannya untuk menilai ungkapan bukan remeh dalam pemula . Pertimbangkan kod berikut:
private static $dates = array( 'start' => mktime( 0, 0, 0, 7, 30, 2009), 'end' => mktime( 0, 0, 0, 8, 2, 2009), 'close' => mktime(23, 59, 59, 7, 20, 2009), 'early' => mktime( 0, 0, 0, 3, 19, 2009), );
Kod ini mencetuskan ralat penghuraian kerana PHP menjangkakan ")" selepas pengendali tugasan, seperti yang dilihat dalam mesej ralat berikut:
Parse error: syntax error, unexpected '(', expecting ')' in /home/user/Sites/site/registration/inc/registration.class.inc on line 19
Kepada memintas had ini, kita boleh menggunakan pendekatan alternatif:
1. Permulaan Tertunda
Selepas mentakrifkan kelas, kita boleh memulakan pembolehubah statik secara eksplisit menggunakan blok kod yang berasingan:
class Foo { static $bar; } Foo::$bar = array(…);
2. Kaedah Permulaan Statik
Kita boleh mentakrifkan kaedah statik dalam kelas untuk memulakan pembolehubah:
class Foo { private static $bar; static function init() { self::$bar = array(…); } } Foo::init();
Nota: PHP 5.6 memperkenalkan sokongan untuk ungkapan tertentu dalam pemula pembolehubah statik, tetapi fungsi ini terhad.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memulakan Pembolehubah Statik dengan Benar dengan Ungkapan Kompleks dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!