定义函数:
function 函数名(【参数】){
//函数体
//返回值:return 结果;
}
调用函数:
函数是在代码执行阶段,碰到函数名字的时候才会调用,不是在编译阶段。 (调用可以在定义之前)
函数命名规范:
- 由字母、数字和下划线组成,但不能以数字开头;
- 驼峰法:除了左边第一个单词外,后边所以的单词首字母都大写:showParentinfo();
- 下划线法:单词之间通过下划线连接,单词都是 小写:show_parent_info().
引用传值:
基本定义语法:
function 函数名($形参1,$形参2){
//函数体
}
注:在传入实参时,必须传入变量。
返回值:
如果没有明确return使用,那么系统默认返回NULL
作用域:
变量(常量)能够被访问的区域
- 全局变量:就是用户普通定义的变量(函数外部定义);在PHP中只允许在全局空间使用,函数内部不可使用;
- 局部变量:函数内部定义的变量;在PHP中只允许当前函数自己内部使用;
- 超全局变量:系统定义的变量(预定义变量:$_SERVER、$_POST等);函数内外都可访问。
超全局变量会将全局变量自动纳入到$GLOBALS里面,而$GLOBALS没有作用域限制,所以能够帮助局部去访问全局变量:但必须使用数组方式
但是通常不会这么用,一般如果会存在特殊使用,也会使用参数的形式来访问。(还可以使用常量:define 定义的)
静态变量:static
基本语法:
function 函数名(){
//定义变量
static $变量名 = 值; //通常在定义的时候就直接赋值
}
可变函数:
匿名函数:
基本语法:
变量名 = function(){
函数体
};
变量保存匿名函数,本质得到的是一个对象(Closure)
闭包:函数内部有一些局部变量(要执行的代码块)在函数执行之后没有被释放,是因为在函数内部还有对应的函数在引用 (函数的内部函数:匿名函数)
证明:函数的局部变量在函数使用完之后没有被释放?
- 使用内部匿名函数;
- 匿名函数使用句变量:use;
- 匿名函数被返回给外部使用。