课程咨询 :13623629309

太原PHP培训 > 达内新闻 > 前端与PHP之间的秘密(二)
  • 前端与PHP之间的秘密(二)

    发布:博客园-原创精华区      来源:博客园-原创精华区      时间:2016-11-11

  • 前端与PHP之间的秘密(二)

    继续前面的话题,PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。本文将详细介绍php函数。

    回调函数

    回调函数是指将一个函数的函数名作为参数传到另一个函数中,这个函数被称为回调函数

    function demo($num,$n){

    for($i=0;$i<$num;$i++){

    if($n($i)){

    echo $i.'

    ';

    }

    }

    }

    function test($i){

    if($i%5){

    return true;

    }

    }

    demo(20,'test');

    call_user_func_array

    使用call_user_func_array可以调用回调函数,并把一个数组参数作为回调函数的参数

    mixed call_user_func_array ( callable $callback , array $param_arr )

    把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入

    function demo($num,$n){

    for($i=0;$i<$num;$i++){

    if(call_user_func_array($n,array($i))){

    echo $i.'

    ';

    }

    }

    }

    function test($i){

    if($i%5){

    return true;

    }

    }

    demo(20,'test');

    实现回调函数时,通常要使用call_user_func_array()函数,而不是变量函数,因为变量函数无法传递对象中的方法或和类中的静态方法

    function demo($num, $n) {

    for($i=0; $i<$num; $i++) {

    if(call_user_func_array($n, array($i))){

    echo $i."

    ";

    }

    }

    }

    class Filter {

    function one($i) {

    if($i%3==0) {

    return true;

    }

    }

    static function two($i) {

    if(preg_match('/3/', $i)) {

    return true;

    }

    }

    }

    demo(500, array(new Filter(), "one"));

    demo(500, array("Filter", "two"));

    递归函数

    在函数中调用自己就是递归函数

    function test( $n ) {

    echo $n;

    if($n>0){

    test($n-1);

    }

    echo $n;

    }

    test(5);//543210012345

    ?>

    加载函数库

    使用include()函数来引入外部文件

    test.php

    function one(){

    echo '111';

    }

    include ('test.php');

    one();//111

    ?>

    但如果不慎引入多次,使得函数重定义,变量重新赋值,会造成错误

    test.php

    function one(){

    echo '111';

    }

    include ('test.php');

    include ('test.php');

    one();//111

    ?>

    此时,需要使用include_once()函数,来保证相同的文件只被引入一次

    test.php

    function one(){

    echo '111';

    }

    include_once('test.php');

    include_once('test.php');

    one();//111

    ?>

    require()

    引入外部文件,还可以使用require()include( )require( )几乎等价,区别在于在脚本执行时包含,当处理失败时,include( )产生一个警告而require( )则导致一个致命错误

    [注意]require_once()include()_once也类似

    匿名函数

    匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值

    其实,php的匿名函数类似于javascript中的函数表达式

    [注意]匿名函数结尾一定要加分号,否则会报错

    $greet = function($name)

    {

    printf("Hello %s\r\n", $name);

    };

    $greet('World');

    $greet('PHP');

    ?>

    闭包

    PHP闭包实现主要就是靠匿名函数

    将匿名函数在普通函数中当做参数传入,也可以被返回。这就实现了一个简单的闭包。

    闭包的两个特点:

    1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。

    2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

    其实上面两点可以合成一点,就是闭包函数返回时,该函数内部变量处于激活状态,函数所在栈区依然保留

    闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去

    $message = 'hello';

    $example = function () use ($message) {

    var_dump($message);

    };

    echo $example();//string 'hello' (length=5)

    好了,今天就给大家讲这么多吧,喜欢我的内容可以关注或者分享(微信公众平台:tytedu)选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!

上一篇:前端与PHP之间的秘密(一)

下一篇:那些年走过的大坑

最新开班日期  |  更多

php高级开发名企定制班(剩2个名额)

php高级开发名企定制班(剩2个名额)

开班日期:12-30

php高级开发周末班(剩5个名额)

php高级开发周末班(剩5个名额)

开班日期:12-30

php高级开发免费试听(剩5个名额)

php高级开发免费试听(剩5个名额)

开班日期:12-30

更多高级开发工程师精品班

更多高级开发工程师精品班

开班日期:12-30

  • 地址:山西省太原市小店区学府街长治路高新国际A座24层
  • 课程培训电话:13623629309     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56

    在线客服系统