标签:
PHP中还是有很多函数式编程的影子,函数功能还是比较强大的。
1. 函数用function 关键字申明,函数名称大小写不明感,而且不支持函数重载,每个函数都有一个特定的名字,不能重名,用return关键字返回值;
2. 函数的调用可以出现在申明之前或者之后,只要在php脚本可见范围内都可以调用,通过一对小括号调用函数;在没有调用时,函数可以以函数名的字符串传递,如讲foo函数保存到$bar中:$bar=“foo”,通过$bar()即可调用foo函数;
3. PHP中使用全局变量需要通过关键字:global显式地申明,或者使用$GLOBALS数组调用全局变量,如果没有申明,则只有局部变量生效;
4. 局部变量在某一段代码体中生效,出了该代码体就自动销毁;
5. 通过static关键字申明一个静态变量,静态变量在代码体执行完成后不会释放,而是保存在静态内容中;
6. PHP中函数的参数可以有很多的形式:
? ? 常规参数:指定每一个参数的类型,以及返回值的类型,和c语言中的函数申明类似,这种声明方式比较少使用,因为不灵活,在一些非常严格的条件下可以使用;
? ? 伪类型参数:在常规参数基础上,使用伪类型,使得函数申明变得灵活一些;
? ? 引用参数:在参数名之前加&符号表示使用该参数的引用,和perl语言中类似,在函数中对该参数的修改会体现到外部数据上;
? ? 默认参数:可以给参数设置默认值;
? ? 可变个数参数:使用func_get_args()函数获取传递的参数数组,类似于perl中的@_;
? ? 大多使用PHP的函数都不需要显式声明类型,以及返回类型,而交给解释器完成;
7. 回调函数,即以一个函数作为参数的函数
? ? 由于函数可以以函数名的字符串的方式,传递给变量,以完成延迟调用的目的,所以可以使用一个保存了函数名称的变量来作为函数的参数,实现函数中调用其他函数;
? ? 另外一种方式是使用内置函数:call_user_func_array()来调用其他函数,其本身就是一个回调函数,该函数接受两个参数,第一个是调用的函数名称,第二个是对应的参数数组;
? ? call_user_func_array()还可以用来调用静态方法或者的对象的方法,只需要将第一个传入的参数改为一个数组,数组中包含方法所在的对象,以及方法名,如call_user_func_array( array(“Foo”,“func”), $args ),其中$args为参数数组,表示调用类Foo的静态方法func;call_user_func_array( array(new Foo(), “func”),$args )表示调用Foo对象的方法func,这里的对象可以用已经实例化或者直接用new实例化;
8. 递归函数,即在函数中不断调用自身的函数,应该尽量避免递归函数的使用,而使用更加优秀的尾递归函数;
9. 使用include()、require()载入外部文件,include在每次载入时都会进行读取和评估,而require只会执行一次。include_once()、require_once()可以避免同一个文件被多次载入,确保每个文件只载入一次。
标签:
原文地址:http://www.cnblogs.com/lyon2014/p/4614713.html