好吧,這是一個愚蠢的問題,但我不能想到它是愚蠢的確切原因。PHP - 爲類常量賦值函數
在PHP當你定義一個類級別的常量爲:
const MY_CONSTANT = 'hello constant';
你爲什麼不能初始化這個值與函數如
const MY_FILEPATH = dirname(dirname(__FILE__)) . '/heres-my-file.php';
好吧,這是一個愚蠢的問題,但我不能想到它是愚蠢的確切原因。PHP - 爲類常量賦值函數
在PHP當你定義一個類級別的常量爲:
const MY_CONSTANT = 'hello constant';
你爲什麼不能初始化這個值與函數如
const MY_FILEPATH = dirname(dirname(__FILE__)) . '/heres-my-file.php';
簡言之:常量被替換,而解析,但功能在解釋時執行。解析器根本無法知道應該如何設置內容的值。
嗨,謝謝。那好吧,那是有道理的。做這種事情的最佳實踐是什麼,因爲它必須發生很多 - 需要一個常量值,但是它是從函數調用或其他東西中定義的。 – David 2011-04-02 22:48:19
常量是不可變的。因此,如果函數可以改變常量的值,那麼它就不是常數。
是的,但我不想改變一個常量的值,而是試圖用函數的值初始化它。 – David 2011-04-02 22:52:20
我明白你的意思。但是,如果函數可以初始化一個常量,理論上它可以改變它的值。因爲該常量必須在類中初始化(如果它也是在類中聲明的)。 – Nabeel 2011-04-02 22:57:13
「如果函數可以初始化一個常量,理論上它可以改變它的值」。這對我沒有多大意義。如果一個常量被初始化,它是一個常量。如果未初始化,則不存在。永遠不會有變化。 – KingCrunch 2011-04-02 23:11:25
歡迎來到SO。這已經在這裏深入討論:http://stackoverflow.com/questions/3960323/why-dont-php-attributes-allow-functions答案很長:)無論如何,這是絕對不可能的,你可能想離開它在那。 – 2011-04-02 22:44:51