php 静态全局类,PHP的局部、静态、全局和超全局变量的使用和区别

【局部变量与全局变量】

在 PHP 中中全局变量和局部变量的定义是和 C 语言类似的。

在函数外定义的变量称为全局变量,在函数内定义的是局部变量。

但是,想要在函数内部使用全局变量却不可以直接使用,而是要先通过 global 关键字声明:

$gVar1 = "hello";

$gVar2 = "world!!";

say_hello();

function say_hello()

{

global $gVar1;

echo $gVar1;

echo $gVar2;

}

运行结果:

hello

Notice: Undefined variable: gVar2 in E:\Wnmp\html\index.php on line 11

可以看到,结果只输出了 hello,然后就报错了。

因为在函数外定义了两个全局变量,而在函数内部只有$gVar1用 global 关键字声明了,所以能正常输出 hello。

因为$gVar2没有 global 声明,所以,PHP 认为$gVar2是一个局部变量,而函数内部又没有定义该局部变量,所报错说:Undefined variable:gVar2 …

在函数内部使用全局变量还可以通过$GLOBALS 数组实现:

$gVar1 = "hello";

$gVar2 = "wzxaini9.cn !!!";

hello();

function hello()

{

$localVar = $GLOBALS['gVar1'] . " " . $GLOBALS['gVar2'];

echo $localVar;

}

输出结果:

hello wzxaini9.cn !!!

【超全局变量】

上面所用的这个$GLOBALS 其实是一个超全局变量,超全局变量的生效范围要比全局变量大。

超全局变量只要被定义了,无论是在函数外部还是函数内部,都可以直接使用,无需额外的声明(与 C 语言的全局变量一样)。

PHP 预定义变量中的超全局变量:

$GLOBALS

$_SERVER

$_GET

$_POST

$_FILES

$_COOKIE

$_SESSION

$_REQUEST

$_ENV

【静态变量】

静态变量和 C 语言中的作用一样:

hello();

hello();

hello();

function hello()

{

static $staticVar = 0;

$staticVar+=66;

echo $staticVar;

echo "";

}

输出结果:

88

176

264

可以看到调用三次函数,输出的结果是不一样的。

因为静态变量只会进行一次初始化定义,虽然它的生效范围仅限于函数内部,然而,它的生命周期却不等于函数的生命周期。

也就是说当函数执行完并返回后,静态变量是不会像局部变量一样被销毁的,而是保持着函数返回之前的状态,等待函数的下一次调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值