2012-01-29 116 views
5

我正在用PHP手動製作我自己的自定義CMS,並且我已經定義了一些常量。有沒有簡單的方法來修改常量?我正在考慮使用fopen()之類的東西,然後改變它,但我從未使用過文件系統功能。如何更改PHP常量?

+11

您可能需要重新訪問「常量」的字典定義。 – BoltClock 2012-01-29 19:22:42

+2

常量和fopen? – 2012-01-29 19:22:51

+3

爲什麼你需要改變你的常量?如果它們在代碼中不是固定的,則使用變量 – Tom 2012-01-29 19:23:03

回答

26

常數是簡單值的標識符(名稱)。 由於名稱 暗示,在執行腳本 (除了魔術常量,其實不是常量)之外,該值不能改變。 A 常量默認情況下區分大小寫。按照慣例,常量 標識符總是大寫。

常量的名稱遵循與PHP中任何標籤相同的規則。 A 有效的常量名以字母或下劃線開頭,後面跟着任意數量的字母,數字或下劃線。作爲常規 表達式,它這樣表達的: [A-ZA-Z_ \ x7f- \ XFF] [A-ZA-Z0-9_ \ x7f- \ XFF] *

從:http://php.net/manual/en/language.constants.php

+8

不能說比php.net更好的頁面! – Tech4Wilco 2012-02-05 00:07:03

0

據我所知,一旦設定,常數就不能改變。

14

不,他們是常量,如「constant - 永久或不變」(維基詞典)。一旦被定義,就沒有辦法改變它們。要報價The Fine Manual,節常量:

在執行腳本期間[常數]值不能更改。

+0

我很抱歉不正確...對我而言,常量只是一個值,可以用於整個整個網站無需繼續定義它們。我應該更清楚我想達到的目標。我創建自己的CMS僅供我自己使用,我想知道如何才能創建一種方法來更改變量,或者對他們來說任何好的術語都不需要手動編輯包含它們的文件/文件。對不起。 – legobear154 2012-01-29 19:29:26

+0

沒有必要爲不正確的道歉,它發生在每個人:) – Piskvor 2012-01-29 19:32:08

+0

好的。創建配置文件的最佳方式是什麼?我將添加一個管理面板到我的CMS,我希望變量可以從那裏編輯。 – legobear154 2012-01-29 19:33:51

15

常量是常量,因此無法更改。 如果您想要更改服務器常量,例如allow_url_fopen(主機的責任),請詢問它們。 如果你想改變它們在PHP中使用變量

UPDATE

如果事實是科爾賓說什麼,你要修改它們在安裝時,你會想做到以下幾點:0。將常量值更改爲sg。像%%constant1。 1.將代碼讀入一個變量。 2.讓用戶設置變量。 3.在str_replace(「%% constant1」,$ _ POST [「value1」],$ configfile)上使用str_replace。 4.將$ configfile作爲文件的內容。

更新2

爲了你自己的CMS而已,我建議如下:店在一個文件中的所有常量,所以你只需要編輯一個文件。也許比以前的解決方案可以更容易編輯,但如果它值得時間的話可以使用IDK。

6

號不能修改常量

0

常量意味着值是恆定的,所以你不能改變的常量。如果你將改變常量,你需要常量的狀態下使用的變量:

define('ROOT', '/some/path'); 
echo ROOT; // echo's /some/path 
define('ROOT', '/some/other/path'); // gives an error 
echo ROOT; // gives /some/path (if there were no error 

$root = '/some/path'; 
echo $root; // echo's /some/path 
$root = '/some/other/path'; 
echo $root; // echo's /some/other/path 
0

我想他是指在一個安裝腳本,在那裏,他想輸入變量存儲到配置文件的情況下,要在他的CMS中使用,一旦安裝完成。 在這種情況下,他不會在運行時改變常量。

HES可能得到這樣的文件:

define(DB, ''); 
define(USER, ''); 
define(PASS, ''); 
define(HOST, ''); 

而且他想創建一個填充這些常量數據,因此它可以在CMS中使用的腳本。

1
in PHP, but only if you have the runkit extension installed. 

However, I must question why you're even defining a constant if you need to change it. It would no longer be a constant once changed and it's appropriate to use constants in your context if it needs to be changed. You may want to consider making it a global variable if it needs to be accessible in other functions or parts of your code, or write proper code by: 
Passing the data as parameters to a function, then returning the manipulated values (if coding in a procedural fashion). 
Set the value in a class' property, then access the value using $this within your class (if coding in an OO fashion).