看了几天的书,今天开始动手编程了,发现自已对变量和作用域这方面理解不透,这里做个总结。
在编程的时候我们总免不了会犯错,调试和查看日志,是两个很重要的方法来帮我们调试程序。在第三天里,我已经安装了xdebug来帮助调试(日志系统还没有时间看,待研究……),这里介绍几个标准输出函数供调试的时候用。
-
echo() 打印一个或多个简单变量或值
-
print() 打印一个简单变量或值
-
printf() 打印一个格式化字符串
-
var_dump() 打印一个变量的类型和内容
-
printf_r() 递归打印一个数组
-
debug_backtrace() 返回一个包含调用栈和其他值的数组
关于变量
全局变量(全局作用域)
一个变量如果定义在全局作用域中,它就会在全局作用域中都可见,而在所有函数或类方法中都不可见。打个比方,函数或类方法都是有外壳的,全局变量不够强大,冲不进去,所以没办法使用它们。
<?php
$a = 7;
function test(){
$a = 20; //只可惜,在函数里该问不到全局变量
}
test();
echo "\$a = $a"; // $a = 7
?>
超全局变量(真正的全局作用域)
超全局变量就像是超级玛丽吃了无敌药水,连函数和类方法的外壳都可以冲进去了,它是真正的无敌的。到处都可以访问。
-
$GLOBALS 这是一个关联数组,包含全局作用域中所定义各个变量的引用
-
$_SERVER 服务器设置的变量
-
$_ENV 环境变量
-
$_GET 通过URL提供给脚本的变量
-
$_POST 通过HTTP POST提供给脚本的变量
-
$_COOKIE 通过HTTP cookie提供给脚本的变量
-
$_FILE 通过HTTP POST提供给脚本的变量
-
$_REQUEST GET、POST和COOKIE方法提供的所有变量
-
$_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";
?>
在超全局变量数组中定义一个变量
局部变量
与函数有关的变量(函数作用域)
-
局部变量
-
参数变量
-
静态变量
这是一个很神奇的东西,它仅在局部函数作用域中存在,且,再次调用函数时还能保留这个值(感觉和JS闭包的功能有点像)。
-
全局变量(见全局变量)
与类有关的变量
- 成员变量/属性
- 方法
- 静态变量(用::访问)
- 静态方法(用::访问)
- 类常量(用const定义,用::访问)
常量
常量的作用域和超全局作用域是一样的,无敌!
PHP中使用define()函数来定义一个常量的,其语法格式为:
bool defined(string $name, mixed $value [, bool case_$insensitive]
name:指定常量的名称
value:指定常量的值
insensitive:指定常量名称是否区分大小写,ture(不区分),false(区分),默认false。
常量和变量的有一个区别是:常量只能保存标量数据(字符串,布尔值,整数,浮点数)。
系统预定义常量(并非是真正的常量,因为这些所谓的常量会根据使用的场合改变值)
- __FILE__ 当前文件名
- __LINE__ 当前行号
- __FUNCTION__ 当前函数名
- __CLASS__ 当前类名
- __METHOD__ 当前方法名
- PHP_VERSION 存储当前PHP的版本号
- PHP_OS 存储当前服务器的操作系统
作用域
作用域是指在一个脚本中某个变量可以使用或可见范围。
- 内置的超级全局变量可以在脚本的任何地方使用和可见。
- 常量,一旦被声明,将可以在全局可见,也就是说,他们可以在函数内外使用。
- 在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部。
- 函数内部使用的变量声明全局变量时,其名称要与全局变量名称一致。
- 在函数内部创建并被声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值。
- 在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。
分享到:
相关推荐
10天学会php (word版) 十天学会PHP之第八天.doc 十天学会PHP之第二天.doc 十天学会PHP之第九天.doc 十天学会PHP之第六天.doc ...十天学会PHP之第四天.doc 十天学会PHP之第五天.doc 十天学会PHP之第一天.doc
PHP MySQL 程序设计 第四版
全新PHP第三第四方支付源码API聚合支付多通道
PHP和MySQL Web开发 第四版 英文版 PHP and MySQL Web Development 4th Edition 英文版,方便COPY书中的CODE
PHP第四方支付平台源码 企业级正规PHP第三方第四方zi付平台.zip源码介绍: 内附详细视频与文字安装教程。 说明: 升级更新增加: 1x - 增加登录注册页面 2x - 增加环迅IPS支付方式 3x - 增加易宝支付 升级...
《PHP与MySQL程序设计 第4版 》pdf与源码 是全面讲述PHP与MySQL的经典之作 书中不但全面介绍了两种技术的核心特性 还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序 《PHP与MySQL程序设计 第4版 》...
系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...
书名:PHP与MySQL程序设计 版本: 第四版 高清pdf格式 含目录
PHP入门到精通第四版 ,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用PHP进行网络开发应该掌握的各方面技术。
PHP与MySQL程序设计(第四版)part1 pdf 共两个包,这是第二个。
如何在十天内学会php之第一天 如何在十天内学会php之第二天 如何在十天学内会php之第三天 如何在十天学内会php之第四天 如何在十天内学会php之第五天 如何在十天内学会php之第六天 如何在十天内学会php之第七天 如何...
php和mysql web开发 第四版 源码
国外PHP动态第四期,很不错啊
第4章 函数 第5章 数组 第6章 面向对象的PHP 第7章 高级OOP特性 第8章 错误和异常处理 第9章 字符串和正则表达式 第10章 处理文件和操作系统 第11章 PEAR 第12章 日期和时间 第13章 PHP 5.1 第14章 表单和导航提示 ...
本书将PHP开发与MySQL应用相结合,分别对PHP和MySQL做了深入浅出的分析,不仅介绍PHP和MySQL的一般概念,而且对PHP和MySQL的Web应用做了较全面的阐述,并包括几个经典且实用的例子。 本书是第4版,经过了全面的更新...
PHP与MySQL程序设计中文版 第四版本书是全面讲述PHP与MySQL的经典之作,不但讲述了两种技术的核心特性,还讲解了如何高效的结合这两种技术构建健壮的Web应用程序。
php和mysql+web开发(中文第四版).mobi (kindle版本)
PHP开发实战宝典第4章源码,流程控制语句源码
大道PHP 第四章 大道PHP 第四章
php和mysql web开发(原书第四版),epub格式的电子书。