基本概念
是一种语法结构,将实现某一个功能的代码块封装到一个结构中,从而实现代码的重复利用
php函数的定义语法
(与C++/Java很类似,区别在于没有数据类型,因为php是弱类型语言)
function 函数名(参数){
//函数体
return 返回值;
}
下图展示了一个实现加法功能的函数
php函数命名规范
由字母、数字、下划线组成,不能以数字开头
习惯采用驼峰法、下划线法来命名
在一个脚本周期中,不允许出现同名函数(在一个脚本中,包含的文件也属于该脚本,也不允许出现同名函数,因此在一个多文件的项目中都不要使用同名函数!)
php函数参数
和C++/Java一样,php的函数也分形参和实参两种参数
值传递
将实参传递给函数,函数在接收参数时会将实参的值赋值给形参,相当于拷贝了一份新值
- 形参,不具有实际意义,在函数定义时使用的参数
- 实参,具有实际数据意义的参数,在函数调用时使用的参数
形参是实参的载体,实参在调用时通常需要传入到函数内部参与运算,那么需要在函数内部找到实际数据所在的位置才能找到数据本身
实际调用的时候,将数据以实参的形式传递给形参,给形参赋值,从而使得函数内部可以用到外部数据
引用(址)传递
将实际参数在内存中的地址传递给函数,以便在函数中能够对实际参数的值进行改变
注意,引用传递的参数只能是变量不能是字面量,因为变量在内存中才有地址
语法:在需要引用传递的参数之前加上&符号
默认值
php函数在定义的时候,可以给形参进行初始赋值,如果实际调用时没有提供对应的这个参数,那么形参就会使用函数定义时给的初始默认值来进行运算
需要注意的是默认值只能从右往前给,不能是更左边的参数给了默认值,更右边的参数却没有默认值
php函数的特点(相对于其余编程语言的特点)
- 只要系统在内存中能够找到对应的函数,就可以执行(函数的调用可以在函数定义之前,而且不必提前声明(C/C++需要提前声明函数))
- 在php中允许实参个数大于形参个数,尽管函数不用(不明白这个设计有什么用,或许能做为渗透测试的漏洞)
- 虽然php脚本没有主函数这一概念,但是也可以在脚本中任意位置使用return返回值,该返回值将被提交给包含此脚本的文件,return之后的代码将不会被执行