Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中不允许变量覆盖_Php_Variables_Overwrite - Fatal编程技术网

PHP中不允许变量覆盖

PHP中不允许变量覆盖,php,variables,overwrite,Php,Variables,Overwrite,可以防止PHP中的变量被覆盖吗?我正在制作一个有一些保留变量的系统,我不希望在某一点之后用其他变量替换它们。有可能吗?如果没有,我可以做些什么来接近这一点 其中一些变量是实例化类,所以我不能将它们定义为常量。看看这个问题。另外,PHP手册中有关的信息可能会有所帮助。在这种情况下,您所能做的最好的事情(我知道)就是在类中使它们成为私有变量。然后必须使用getter和setter来分配值或构造。这样,其他人的代码就不太可能与你的代码冲突。在你的情况下,不可能找到最简单的方法,因为根本没有可用的代码,

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


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

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

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

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

  • 将它们作为私有成员变量隐藏在类中
  • 通过getter暴露它们

  • 如果需要,将它们设置为静态的

    是的,它们被称为


    如果您不能使用它们,假设您运行的是最新的PHP版本,那么您可以使用,使用名称空间,您可以在不同的名称空间上有两个相同名称的变量。这样您就不会发生冲突。

    也许您可以实现类似于冻结状态的功能,如果类已冻结,则无法修改:

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

    更换的是什么?是否从不受信任的用户内容导入变量?或者这仅仅是为了保护自己不受未来自我伤害的一般概念?是的,从技术上讲,我是在为自己辩护,要毁掉一切,但不仅仅是我,因为我不是唯一一个编写脚本的人,所以主变量可能会在某个时候发生冲突。我不想为此键入完整的答案,所以我只想说:避免全局变量!使用类和适当的封装技术。静态也是一个选项,。但所有对象的值都必须相同。他说他不能使用ConstantsThank,我查看了文档,名称空间在未来将对我有很大帮助,但不幸的是,我必须在许多服务器上处理不同的PHP版本,我不能假设所有这些都可以升级到最新版本,所以我将选择另一个选项,他说他不能使用常量,尽管关于静态保护的链接可能会有帮助。我知道,这就是为什么我先链接到另一个问题。不过,阅读常量可能仍然有帮助。(特别是手册页面上的一些示例代码)它完美地满足了我的需要。谢谢