0

无论如何要使变量受保护并且不能覆盖到 php ?

ps:不在课堂或定义中。

例如;

<?php
$var ="something";
$var ="test";
echo $var;
?>

我希望这段代码返回“某物”而不是“测试”。

你对此有什么想法吗?

4

3 回答 3

1

从技术上讲,您可以使用辅助函数和global(yuck) 关键字,但 classes/define更好(但您仍然必须使用函数并将所有$var = "something"行更改为set_var("something")):

<?php
    set_var("something");
    set_var("test");

    var_dump($var); //string(9) "something"

    function set_var($newVar) {
        static $varIsSet;

        global $var;

        if (!$varIsSet) {
            $var = $newVar;
            $varIsSet = true;
        }
    }
?>

演示

于 2013-08-08T11:08:23.463 回答
1

这将违背变量的全部观点

变量的全部目的是它的值是可变的,它可以在程序的后期更改。

我可以用什么代替?

但是你可以使用一个常量

// Works on PHP 5.3.0 and later
const SOME_CONSTANT = "Some value.";

或者

// Far more well known, works on older PHPs, does the same thing
define("SOME_CONSTANT", "Some value");

如何使用常量?

然后像使用变量一样使用它:

echo SOME_CONSTANT;

您几乎可以以任何可以使用变量的方式使用常量,只是传统上您会为常量使用大写名称(这在 PHP 中不强制)并且它不会以$符号开头(这是强制执行)...哦,当然,您不能重新分配它。

注意:因为使用关键字定义的常量const是在编译时定义的,所以您不能在循环结构、if语句、switch语句等中使用此语法,而必须使用此语法define()

于 2013-08-08T11:14:27.003 回答
0

您可以使用函数来模拟该行为:

function var() {
  return "something";
}

但是,如果您不想改变“变量”,请使用常量。

于 2013-08-08T11:06:31.407 回答