私はいくつかの設定を保存するキー値のデータベーステーブルを持っています。PHPに定数オブジェクトがないのはなぜですか?
これらの設定は、編集可能ではないので、PHP定数オブジェクトに入れたいと思います。
define('MySettings', array(
'title' => 'My title'
// etc
));
// And call it with
echo MySettings['title'];
をそして、それは素晴らしい作品:
PHP7では、我々は今、これを行うことができます。
しかし、なぜ私が行うことはできません。
define('MySettings', (object) array('title' => 'My title'));
は、だから私は、この代わりのようにそれを呼び出すことができます。
echo MySettings->title;
// or
echo MySettings::title;
これは私がそれのようにそれを入力するために迅速かつきれいだと思うだけの理由でありますオブジェクトのプロパティ/定数($obj->key
、$obj::key
)よりも配列($array['key']
)
これは不可能な理由はありますか?
技術的にオブジェクトを定数にすることはできないためです。それらはコードを含むことができます。つまり、オブジェクトの内部を変更することができます。つまり、定数ではありません。それが定数を持っている理由です。定数に入れるものが決して変更されないという約束/保証です。 –
現在、不変オブジェクトをサポートするためのPHPの将来のバージョンについて議論中の提案があります。これにより、プログラムは一連の値を持つオブジェクトを作成することができ、オブジェクトが作成されるとその値は固定され、変更できなくなります。 https://wiki.php.net/rfc/immutabilityで詳しく読むことができます。ただし、PHP(7.0)にはまだ含まれていないことに注意してください。また、今後の7.1リリースには含まれません。ディスカッションの流れに応じて、7.2に入るかもしれませんが、この段階で何かを約束するのは時期尚早です。 – Simba