在PHP中禁止变量覆盖

时间:2012-07-26 18:57:17

标签: php variables overwrite

是否可以防止在PHP中覆盖变量?我正在制作一个具有一些保留变量的系统,我不希望它们在某一点之后被其他东西替换。有可能的?如果没有,我该怎样做才能接近这个?

其中一些变量是实例化的类,所以我不能将它们定义为常量。

5 个答案:

答案 0 :(得分:6)

查看this问题。此外,PHP手册中有关constants的信息可能会有所帮助。

答案 1 :(得分:5)

是的,它们被称为 constants

如果您不能使用它们,假设您运行的是最新的PHP版本,则可以使用 namespaces ,使用命名空间,您可以在不同的名称上使用2个相同名称的变量命名空间。这样你就不会发生碰撞。

答案 2 :(得分:3)

在这种情况下你能做的最好的事情(我知道)就是让它们成为类中的私有变量。然后,您必须使用getter和setter来分配值或构造。这样,其他人的代码就不太可能与你的代码发生冲突。

答案 3 :(得分:0)

在你的情况下找不到它是最简单的是不可能的,因为根本没有可用的代码,但是更好的选择可能是

  1. 将它们隐藏在类中作为私有成员变种。
  2. 通过吸气剂揭露它们。
  3. 如果需要,请将它们设为静态

答案 4 :(得分:0)

也许你可以实现冻结状态,如果类被冻结,则无法修改:

class Test
{
    private $variable;
    private $frozen = false;

    public function freeze() {
        $this->frozen = true;
    }

    public function setVariable($value) {
        if ($this->frozen)
            throw new Exception("...");

        $this->variable = $value;
    }
}