ホームページ >バックエンド開発 >PHPチュートリアル >配列を初期化するときに代入を定数にできないのはなぜですか?
非常に奇妙な現象を今発見しました
次の配列をクラスの属性として設定しました。SYSTEM_LIB は私が定義した定数です
final class Application { public static $_lib=array( 'route' => SYSTEM_LIB.'/lib_route.php', 'mysql' => SYSTEM_LIB.'/lib_mysql.php', );}
final class Application { public static $_lib=array(); public static function run(){ self::$_lib =array( 'route' => SYSTEM_LIB.'/lib_route.php', 'mysql' => SYSTEM_LIB.'/lib_mysql.php', ); }}
クラスが定義されている場合、属性に不確実な値を割り当てることはできません
ユーザー定数は、プログラムが実行中です
構文チェックはプログラムの実行前に行われます
システム定数は値が決定されます
class T { var $os = PHP_OS;}$p = new T;echo $p->os;
他の PHP 静的変数と同様、静的プロパティは初期化のみ可能です。 PHP 5.6 より前のリテラルまたは定数の使用は許可されません。
PHP の静的変数と同様、静的プロパティはリテラル値または定数でのみ初期化できます (PHP5.6 より前のバージョンは許可されません)。
PHP 5.6 以降では、const 式と同じルールが適用されます。
PHP 5.6 以降では、const 式と同じルールが適用されます。 、コンパイル時に計算できる限り、いくつかの特定の式を使用できます
したがって、最初の書き方は PHP 5.6 以降で正常に実行できます。
私の印象では、静的変数は他の変数や関数を値として初期化することはできません