您当前的位置: 首页 > 网站编程 > PHP教程 > PHP的变量类型和作用域详解

PHP的变量类型和作用域详解

作者:不详 来源:网络 发布时间: 2014-08-07 09:22 点击:
什么是变量的作用域?变量的作用域是指在脚本的一次生命周期内变量的有效范围。一般来说有全局和局部之分 PHP中变量的作用域可以分为:超全局(全局变量的特殊类型,在局部范围里可直接使用),全局,局部,静态(是局部变量的特殊类型) 在PHP中,全局变量实际上是静态全

PHP的变量类型和作用域详解

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

  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

  从上面的代码中,可知如果一个类成员方法中有静态变量,即使是不同的类实例,他们也会共享这个静态变量,尽管这个静态变量不是类静态成员变量,这点容易让人迷惑。
分享到:
本文"PHP的变量类型和作用域详解"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4