PHP 第四天

本文详细介绍了PHP中的变量类型,包括全局变量、超全局变量、局部变量等,并解释了不同变量的作用域及其使用方法。此外,还介绍了几种常用的调试函数,帮助开发者更好地理解和调试程序。

看了几天的书,今天开始动手编程了,发现自已对变量和作用域这方面理解不透,这里做个总结。

 

在编程的时候我们总免不了会犯错,调试和查看日志,是两个很重要的方法来帮我们调试程序。在第三天里,我已经安装了xdebug来帮助调试(日志系统还没有时间看,待研究……),这里介绍几个标准输出函数供调试的时候用。

  1. echo()  打印一个或多个简单变量或值
  2. print()  打印一个简单变量或值
  3. printf()  打印一个格式化字符串
  4. var_dump()  打印一个变量的类型和内容
  5. printf_r()  递归打印一个数组
  6. debug_backtrace()  返回一个包含调用栈和其他值的数组


关于变量

全局变量(全局作用域)

  一个变量如果定义在全局作用域中,它就会在全局作用域中都可见,而在所有函数或类方法中都不可见。打个比方,函数或类方法都是有外壳的,全局变量不够强大,冲不进去,所以没办法使用它们。

<?php 
$a = 7;
  function test(){
    $a = 20; //只可惜,在函数里该问不到全局变量 
  }
  test();
  echo "\$a = $a"; // $a = 7
?> 
 

超全局变量(真正的全局作用域)

超全局变量就像是超级玛丽吃了无敌药水,连函数和类方法的外壳都可以冲进去了,它是真正的无敌的。到处都可以访问。

  1. $GLOBALS  这是一个关联数组,包含全局作用域中所定义各个变量的引用
  2. $_SERVER  服务器设置的变量
  3. $_ENV  环境变量
  4. $_GET  通过URL提供给脚本的变量
  5. $_POST 通过HTTP POST提供给脚本的变量
  6. $_COOKIE  通过HTTP cookie提供给脚本的变量
  7. $_FILE 通过HTTP POST提供给脚本的变量
  8. $_REQUEST GET、POST和COOKIE方法提供的所有变量
  9. $_SESSION  目前在会话中注册的变量

如何让全局变量变成超全局变量?

方法一:

<?php 
  $a = 7; 
  function test(){ 
    global $a;
    $a = 20; 
  } 
  test();
  echo "\$a = $a"; 
?>
 

增加global $a;这一行,使$a两个变量引用相同的内存,以后再在函数中使用时,仍需global关键字。

 

方法二:

<?php 
  $a = 7; 
  function test(){ 
    $GLOBALS['a'] = 20;
  }
 test(); 
  echo "\$a = $a";
?> 
   

 在超全局变量数组中定义一个变量

 

局部变量

 

与函数有关的变量(函数作用域)

  1. 局部变量
  2. 参数变量
  3. 静态变量 这是一个很神奇的东西,它仅在局部函数作用域中存在,且,再次调用函数时还能保留这个值(感觉和JS闭包的功能有点像)。
  4. 全局变量(见全局变量)

与类有关的变量

  1. 成员变量/属性
  2. 方法
  3. 静态变量(用::访问)
  4. 静态方法(用::访问)
  5. 类常量(用const定义,用::访问)


常量

 

常量的作用域和超全局作用域是一样的,无敌!

 

PHP中使用define()函数来定义一个常量的,其语法格式为:

bool defined(string $name, mixed $value [, bool case_$insensitive]

name:指定常量的名称

value:指定常量的值

insensitive:指定常量名称是否区分大小写,ture(不区分),false(区分),默认false。

 

常量和变量的有一个区别是:常量只能保存标量数据(字符串,布尔值,整数,浮点数)。

 

 

系统预定义常量(并非是真正的常量,因为这些所谓的常量会根据使用的场合改变值)

  1. __FILE__  当前文件名
  2. __LINE__  当前行号
  3. __FUNCTION__  当前函数名
  4. __CLASS__  当前类名
  5. __METHOD__  当前方法名
  6. PHP_VERSION 存储当前PHP的版本号
  7. PHP_OS 存储当前服务器的操作系统

 

作用域

作用域是指在一个脚本中某个变量可以使用或可见范围。

 

  1. 内置的超级全局变量可以在脚本的任何地方使用和可见。
  2. 常量,一旦被声明,将可以在全局可见,也就是说,他们可以在函数内外使用。
  3. 在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部。
  4. 函数内部使用的变量声明全局变量时,其名称要与全局变量名称一致。
  5. 在函数内部创建并被声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值。
  6. 在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值