假设我定义了一个这样的变量:
<?php
define("page", "actual-page");
?>
现在我必须将此内容从actual-page
更改为second-page
我怎么能意识到这一点?
我尝试以下方法:
<?php
// method 1
page = "second-page";
// method 2
define("page", "second-page");
// method 3
unset(page);
define("page", "second-page");
?>
现在我的想法消失了......我还能做什么?
答案 0 :(得分:18)
当你使用PHP的define()函数时,你没有定义变量,你正在定义一个常量。一旦脚本开始执行,常量就不能修改它们的值。
答案 1 :(得分:5)
您可以使用runkit PECL扩展:
runkit_constant_remove('page');
http://php.net/runkit_constant_remove
http://github.com/zenovich/runkit
sudo pecl install https://github.com/downloads/zenovich/runkit/runkit-1.0.3.tgz
更新:此模块似乎会引发各种其他问题,例如会话系统。
答案 2 :(得分:1)
也许答案很晚,但问题是“现在我的想法了...我还能做什么?”
这是您可以做的“其他”操作-使用$ GLOBALS:
<?php
// method 1
$GLOBALS['page'] = 'first-page';
// method 2
$GLOBALS['page'] = "second-page";
// method 3
$GLOBALS['page'] = 'third-page';
?>
我希望它会有所帮助。我在进行导入时会使用它,例如,如果打开了导入标志,我希望不触发特定事件:)
答案 3 :(得分:-7)
define 有第三个参数(boolean),它将第一个定义的常量覆盖到第二个定义的常量。将第一个定义的常量设置为 true 。
<?php
define("page", "actual-page", true);
// Returns page = actual-page
define("page", "second-page");
// Returns page = second-page
?>