我有一個鍵值數據庫表,我存儲了一些設置。爲什麼PHP不能有一個常量對象?
我想將這些設置放在一個PHP常量對象中,因爲它們不應該是可編輯的。
在PHP7我們現在可以這樣做:
define('MySettings', array(
'title' => 'My title'
// etc
));
// And call it with
echo MySettings['title'];
而且它的偉大工程。
但爲什麼我不能做:
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