取消设置或更改已定义的常量PHP

时间:2013-05-11 12:33:57

标签: php

假设我定义了一个这样的变量:

<?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");
?>

现在我的想法消失了......我还能做什么?

4 个答案:

答案 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
?>