如何更改PHP常量


How can I change PHP constants?

我正在用PHP手工制作自己的自定义CMS,我已经定义了一些常量。有没有一种简单的方法可以修改常量?

我曾考虑使用fopen()之类的东西,然后对其进行更改,但我从未使用过文件系统函数。

常量是一个简单值的标识符(名称)作为名称建议,该值在脚本执行期间不能更改(除了魔术常数,它们实际上并不是常数)。A.默认情况下,常量区分大小写。按照惯例,常数标识符总是大写的。

常量的名称遵循与PHP中任何标签相同的规则。A.有效的常量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为常客表达,就会这样表达:[a-zA-Z_''x7f-''xff][a-zA-Z0-9_''x7f-''xff]*

来自:常量(PHP mamual)

常量是常量,因此不能更改。如果要更改服务器常量,如allow_url_fopen,则由主机负责。问问他们。

如果您想在PHP中更改它们,请使用变量。

如果事实是Corbin所说的,并且你想在安装中修改它们,你会想做以下事情:1。将常数值更改为,例如%%constant1。2.将代码读入变量。3.让用户设置变量。4.在所有它们上使用str_replace,如str_replace("%%constant1",$_POST["value1"],$configfile)。5.添加$configfile作为文件的内容。

仅针对您自己的CMS,我建议如下:将所有常量存储在一个文件中,因此您只需要编辑一个文件。也许之前的解决方案可以更容易地进行编辑,但我不知道这是否值得花时间。

否。它们是常数,如"常数-是永久的或不变的"(Wiktionary)。一旦它们被定义,就没有办法改变它们。引用The Fine Manual,章节常数:

在脚本执行期间,[常量的]值不能更改。

否。不能修改常量。

在PHP中,但前提是安装了runkit扩展。

然而,我必须质疑,如果你需要更改常量,为什么还要定义它。一旦更改,它就不再是常量,如果需要更改,在上下文中使用常量是合适的。如果它需要在代码的其他函数或部分中访问,或者通过以下方式编写正确的代码,您可能需要考虑将其作为全局变量:

将数据作为参数传递给函数,然后返回操作后的值(如果以过程方式进行编码)。

在类的属性中设置值,然后在类中使用$this访问该值(如果以面向对象(OO)方式进行编码)。

我认为OP的意思是在安装程序脚本的情况下,OP希望将输入变量存储到配置文件中,以便在安装完成后在OP的CMS中使用。

在这种情况下,OP在运行时不会更改常量。

OP可能有一个这样的文件:

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

OP希望创建一个脚本,用数据填充这些常量,以便在CMS中使用。

据我所知,一旦设置,常量就无法更改。

常量意味着值是常量,因此不能更改常量。如果要更改常量,则需要使用变量而不是常量:

define('ROOT', '/some/path');
echo ROOT; // Echoes /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; // Echoes /some/path
$root = '/some/other/path';
echo $root; // Echoes /some/other/path