函数式编程
函数式编程
函数式编程的特点:
1.函数可以与其他数据类型一样进行传递赋值;
2.只用表达式,不用语句,每一步都是单纯的运算,而且都有返回值,函数式编程的动机是,为了处理运算,不考虑系统的读写,减少不必要的读写操作;
3.函数式编程,不能存在函数内部和外部的互动,函数需要保持独立,不能修改外部变量的值;
4.引用透明,函数运行不依赖外部变量或状态,只依赖与输入的参数
函数式编程的好处:
代码简洁,开发快速
函数式编程大量使用函数,减少代码的重复,开发速度快;
函数式编程接近自然语言,易于理解 函数式编程的自由度很高,可以写出很接近自然语言的代码;
很方便代码管理,函数式编程不依赖外界状态,故而不会对外界数据产生影响,有利于,单元测试和模块组合;
易于并发编程,不需要考虑死锁的问题;
代码的热升级,函数式编程不会影响其他;
将函数名进行传递 进而进行调用的编程思想
在php中,使用$fname() 这样的思路可以实现, 也可以 call_user_func('phpinfo');
使用这种方式之前需要先检测下类中是否有这个函数
<?php/*函数式编程在php中,使用$fname() 这样的思路可以实现, 也可以 call_user_func('phpinfo');*/classHSController{publicstaticfunction login(){echo "login in!!";}}$action=$_GET['action'];//先要检车下这个类中是否有这个方法 使用php的反射机制检查$reflectionClass=new reflectionClass('HSController');if(!$reflectionClass->hasMethod($action))//检查类中是否有该方法{echo $action.' is not found!';exit();}//检查该方法是否是静态方法$reflectionMethod=$reflectionClass->getMethod($action);if(!$reflectionMethod->isStatic()){echo $action.' is not a static function!';exit();}HSController::$action();?>
php中闭包实现函数式编程思想
<?php/*lambda表达式在php 5.3之前是使用 create_function('',);*/create_function('$a','return addcslashes(trim($a));');//相当于构造一个下面的函数function lambda_1($a){return addcslashes(trim($a));}//create_function 会创建一个 lambda_数字的一个临时函数//在php5.3 php 便开始真正的支持闭包 lambda也就更好用了$data=range(0,10);//更接近javascript的lambda语法$newData=array_map(function($v){$a=range(0, $v);return array_sum($a);}, $data);function outer(){$a=11;returnfunction()use($a){//闭包echo $a;};}$inner=outer();$inner();print_r($newData);?>
浙公网安备 33010602011771号