PHP的变量类型和作用域详解
发布时间:2020-12-12 20:06:21 所属栏目:PHP教程 来源:网络整理
导读:PHP中变量的作用域可以分为:超全局(全局变量的特殊类型,在局部范围里可直接使用),全局,局部,静态(是局部变量的特殊类型) 在PHP中,全局变量实际上是静态全局变量,如果不用unset显式的释放,那么等脚本运行结束全局变量才会被释放掉 局部静态变量细分可
PHP中变量的作用域可以分为:超全局(全局变量的特殊类型,在局部范围里可直接使用),全局,局部,静态(是局部变量的特殊类型) 超全局变量:在一个脚本的任何作用域里都可以被访问,这些都是PHP内置的 代码如下: $GLOBALS $_SERVER $_GET $_POST $_FILES $_SESSION(持久化存储) $_COOKIE(持久化存储) $_REQUEST $_ENV 全局变量:声明的变量不在class,function,if等语言结构内部,如果要在class,if等语言内部使用,需要用关键词global或者超全局变量$GLOBALS 静态变量: 在function中使用关键词static声明的变量,静态变量的值保留直至脚本结束 1.global关键词和$GLOBALS实例 代码如下: $a = 0; function foo() { global $a; echo $a; } function foo2() { echo $GLOBALS['a']; } 2.static 变量和普通局部变量区别实例 代码如下: function foo1() { $var = 0; $var++; return $var; } echo foo1(); echo foo1(); //输出都是1 function foo () { static $var = 0; $var++; return var; } echo foo(); echo foo(); //第一次输出1 第二次2 3.static 关键词还可以声明静态属性和静态方法静态属性只能被类调用,而不能被类实例调用 静态方法里不能使用$this,只能用self访问类的静态属性 另外理解static变量的一段代码: 代码如下: class t
{ static $v = 10; public function a() { static $var = 10; $var++; echo $var . " n"; } public static function aa() { self::$v++; echo self::$v . " n"; } } $o1 = new t(); $o1->a();//输出11 $o2 = new t(); $o2->a();//输出12 t::aa();//输出11 $o1->aa();//输出12 $o2->aa();//输出13 从上面的代码中,可知如果一个类成员方法中有静态变量,即使是不同的类实例,他们也会共享这个静态变量,尽管这个静态变量不是类静态成员变量,这点容易让人迷惑。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |