PHP的变量类型和作用域详解
2023-06-13 09:15:19 时间
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实例
$a=0;
functionfoo()
{
global$a;
echo$a;
}
functionfoo2()
{
echo$GLOBALS["a"];
}
2.static变量和普通局部变量区别实例
functionfoo1()
{
$var=0;
$var++;
return$var;
}
echofoo1();
echofoo1();
//输出都是1
functionfoo()
{
static$var=0;
$var++;
returnvar;
}
echofoo();
echofoo();
//第一次输出1第二次2
3.static关键词还可以声明静态属性和静态方法
静态属性只能被类调用,而不能被类实例调用
静态方法里不能使用$this,只能用self访问类的静态属性
另外理解static变量的一段代码:
<?php
classt
{
static$v=10;
publicfunctiona()
{
static$var=10;
$var++;
echo$var."<br>\n";
}
publicstaticfunctionaa()
{
self::$v++;
echoself::$v."<br>\n";
}
}
$o1=newt();
$o1->a();//输出11
$o2=newt();
$o2->a();//输出12
t::aa();//输出11
$o1->aa();//输出12
$o2->aa();//输出13
从上面的代码中,可知如果一个类成员方法中有静态变量,即使是不同的类实例,他们也会共享这个静态变量,尽管这个静态变量不是类静态成员变量,这点容易让人迷惑。
相关文章
- php变色列表案例
- php批量修改怎么实现,PinPHP购物分享系统2.2后台批量采集修改实现方法
- PHP变量详解
- Linux更新:升级PHP版本(linux更新php版本)
- PHP Fatal error: Uncaught Error: Call to undefined function pcntl_fork().. 开启php pcntl扩展实现多进程详解编程语言
- PHP命令执行php文件需要注意的问题详解编程语言
- 数据库MySQL 数据库的 PHP 扩展研究(php扩展mysql)
- 学习Linux开启PHP学习之旅(linux开启php)
- 脚本Linux下使用PHP启动脚本指南(linux下php启动)
- PHP操作MySQL数据库的完整指南(php读写mysql)
- 「PHP Redis手册:高效有力的操作指南」(php的redis手册)
- PHP与MySQL:如何实现连接?(php怎么连mysql)
- 驱动开发:PHP框架与MongoDB的结合(php框架mongodb)
- Linux部署PHP:极速入门指南(linux如何部署php)
- PHP 存入 MySQL 数据库教程(php 存入mysql)
- PHP操作MSSQL——实现高效读写(php读写mssql)
- 用Redis和PHP构建强大的商城(商城redis php)
- 以原生PHP类库操作Redis数据库(原生php操作redis)
- 使用PHP连接Redis应用的指南(redis连接 php)
- PHP编程中字符串处理的5个技巧小结
- 创建数据库php代码用PHP写出自己的BLOG系统
- php下安装配置fckeditor编辑器的方法
- PHP操作mysql函数详解,mysql和php交互函数
- PHP安全配置详细说明
- php源代码安装常见错误与解决办法分享
- php中的静态变量的基本用法