Memulakan Pembolehubah Statik dalam PHP
Apabila memulakan pembolehubah statik dalam PHP, anda mungkin menghadapi ralat sintaks dengan ungkapan bukan remeh dalam pemula, seperti yang dilihat dalam coretan kod di bawah:
private static $dates = array( 'start' => mktime( 0, 0, 0, 7, 30, 2009), // Start date 'end' => mktime( 0, 0, 0, 8, 2, 2009), // End date 'close' => mktime(23, 59, 59, 7, 20, 2009), // Date when registration closes 'early' => mktime( 0, 0, 0, 3, 19, 2009), // Date when early bird discount ends );
Penyelesaian:
Satu penyelesaian adalah untuk mengelakkan ungkapan kompleks dalam pemula dan sebaliknya tetapkan nilai selepas mentakrifkan kelas:
class Foo { static $bar; } Foo::$bar = array(…);
Pilihan lain ialah menggunakan fungsi statik untuk memulakan pembolehubah:
class Foo { private static $bar; static function init() { self::$bar = array(…); } } Foo::init();
Penambahbaikan PHP 5.6:
PHP 5.6 menyokong beberapa ungkapan dalam pemula pembolehubah statik. Sebagai contoh, anda boleh menentukan kelas abstrak dengan fungsi statik peribadi untuk memulakan pembolehubah:
abstract class Foo{ private static function bar(){ static $bar = null; if ($bar == null) bar = array(...); return $bar; } /* use where necessary */ self::bar(); }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memulakan Pembolehubah Statik Kompleks dengan Betul dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!