PHP的变量类型和作用域详解
发布:smiling 来源: PHP粉丝网 添加日期:2020-10-27 14:16:51 浏览: 评论:0
什么是变量的作用域?变量的作用域是指在脚本的一次生命周期内变量的有效范围。一般来说有全局和局部之分。
PHP中变量的作用域可以分为:超全局(全局变量的特殊类型,在局部范围里可直接使用),全局,局部,静态(是局部变量的特殊类型)。
在PHP中,全局变量实际上是静态全局变量,如果不用unset显式的释放,那么等脚本运行结束全局变量才会被释放掉。
局部静态变量细分可以是 局部静态函数变量(函数中声明的static变量),局部静态成员变量(类中声明的 static 属性,被所有类实例共享)。
局部静态变量只有脚本运行结束才会被自动释放。
超全局变量:在一个脚本的任何作用域里都可以被访问,这些都是PHP内置的,代码如下:
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_FILES
- $_SESSION(持久化存储)
- $_COOKIE(持久化存储)
- $_REQUEST
- $_ENV
全局变量:声明的变量不在class,function,if等语言结构内部,如果要在class,function,if等语言内部使用,需要用关键词global或者超全局变量$GLOBALS
静态变量: 在function中使用关键词static声明的变量,静态变量的值保留直至脚本结束。
局部变量:在class,function,if/while/for等结构语句内部声明的变量。
1.global关键词和$GLOBALS实例,代码如下:
- <?php
- $a = 0;
- function foo()
- {
- global $a;
- echo $a;
- }
- function foo2()
- {
- echo $GLOBALS['a'];
- }
2.static 变量和普通局部变量区别实例,代码如下:
- <?php
- 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变量的一段代码:
- <?php
- class t
- {
- static $v = 10;
- public function a()
- {
- static $var = 10;
- $var++;
- echo $var . "<br>\n";
- }
- public static function aa()
- {
- self::$v++;
- echo self::$v . "<br>\n";
- }
- }
- $o1 = new t();
- $o1->a();//输出11
- $o2 = new t();
- $o2->a();//输出12
- t::aa();//输出11
- $o1->aa();//输出12
- $o2->aa();//输出13
从上面的代码中,可知如果一个类成员方法中有静态变量,即使是不同的类实例,他们也会共享这个静态变量,尽管这个静态变量不是类静态成员变量,这点容易让人迷惑。
Tags: PHP变量类型
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)