2012-01-29 105 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).