不允许在PHP中覆盖变量


Disallow variable overwrite in PHP

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

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

看看这个问题。此外,PHP手册中有关常量的信息可能会有所帮助。

是的,它们被称为常量

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

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

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

  1. 将它们作为私有成员vars隐藏在类中
  2. 通过getter暴露它们

如果需要,使它们成为静态

也许你可以实现类似冻结状态的东西,如果类被冻结,就不能修改:

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;
    }
}