资讯专栏INFORMATION COLUMN

PHP的变量范围

aristark / 735人阅读

摘要:什么是变量的作用域变量的作用域是指在脚本的一次生命周期内变量的有效范围。一般来说有全局和局部之分。

什么是变量的作用域?变量的作用域是指在脚本的一次生命周期内变量的有效范围。一般来说有全局和局部之分。
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等结构语句内部声明的变量

global关键词和$GLOBALS



static 变量和普通局部变量区别



static 关键词还可以声明静态属性和静态方法
静态属性只能被类调用,而不能被类实例调用
静态方法里不能使用$this,只能用self访问类的静态属性

另外理解static变量的一段代码


";
        }
        public static function aa()
        {
                self::$v++;
                echo self::$v . "
"; } } $o1 = new t(); $o1->a();//输出11 $o2 = new t(); $o2->a();//输出12 t::aa();//输出11 $o1->aa();//输出12 $o2->aa();//输出13

从上面的代码中,可知如果一个类成员方法中有静态变量,即使是不同的类实例,他们也会共享这个静态变量,尽管这个静态变量不是类静态成员变量,这点容易让人迷惑

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20658.html

相关文章

  • 搞定PHP面试 - 变量知识点整理

    摘要:声明静态变量时不能用表达式的结果对其赋值正确错误使用表达式的结果赋值错误使用表达式的结果赋值静态变量与递归函数静态变量提供了一种处理递归函数的方法。 一、变量的定义 1. 变量的命名规则 变量名可以包含字母、数字、下划线,不能以数字开头。 $Var_1 = foo; // 合法 $var1 = foo; // 合法 $_var1 = foo; // 合法 $Var-1 = foo; /...

    Mertens 评论0 收藏0
  • 变量与常量 - PHP手册笔记

    摘要:可变变量可变变量是语言中的一种特殊用法,不知其他语言存不存在。简而言之,可变变量就是,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。当可变变量用于数组时,可能会出现模棱两可的问题。常量语法常量在脚本执行期间其值不能改变。 变量基础 PHP中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的,并且出现中文可能也是合法的。 变量默认总是传值赋值。PHP也提供了另外一...

    zzbo 评论0 收藏0
  • 重读PHP手册笔记系列(二)

    摘要:通过注册自动加载器,脚本引擎在出错失败前有了最后一个机会加载所需的类构造函数和析构函数构造函数允行开发者在一个类中定义一个方法作为构造函数。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行抽象类支持抽象类和抽象方法。 语言参考 1. 类型 1.1 简介 showImg(https://segmentfault.com/img/bVbqlNJ?w=531&h=379);...

    马龙驹 评论0 收藏0
  • 关于phpprintf系列函数文章进行排错,虽已100%测试过。

    摘要:如果对应的变量中的值是个科学记数法的值,它会进行压缩然后插入到原字符串对应的符号位置,例如按照常规转换为如果使用它会压缩转换为。它取消掉了调用函数的参数,直接输出了使用方式相同,惟一不同的是它把存放对应变量的参数可以作为数组方式传入。 字符相关: %s - 对应的变量双引号中的值按照原样的内容插入到原字符串对应的%s符号位置。 %c - 参考百度百科->标准ASCII表相当于chr...

    nifhlheimr 评论0 收藏0
  • PHP面试之一:PHP基础知识点

    摘要:之前,第三方编译是管理器,是解释器之后,官方自带,与模式。又是解释器,又是管理器以模块模式运行常见配置数组排序 PHP引用变量 什么是引用变量?如何定义引用变量? 引用意味着用不同的名字访问同一个内容定义引用变量:使用& 引用变量的工作原理 普通变量的工作原理 $a = range(0,10000); var_dump(memory_get_usage()); //int(7420...

    waterc 评论0 收藏0

发表评论

0条评论

aristark

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<