好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php debug_backtrace、debug_print_backtrace和匿名函数 -

php debug_backtrace、debug_print_backtrace和匿名函数

debug_print_backtrace,与之不同的是它会直接打印回溯信息.

debug_print_backtrace() 是一个很低调的函数,很少有人注意过它.

不过当我对着一个对象调用另一个对象再调用其它的对象和文件中的一个函数出错时,它正在一边笑呢.

debug_print_backtrace() 可以打印出一个页面的调用过程,从哪儿来到哪儿去一目了然.不过这是一个PHP5的专有函数,好在pear中已经有了实现.

一、debug_backtrace 它可以回溯跟踪函数的调用信息,可以说是一个调试利器,代码如下:

one();   function  one() {    two();     }   function  two() {    three();  }   function  three() {    print_r( debug_backtrace() );   }   /*输出:    Array(         [0] => Array        (                [file] => D:apmservwwwhtdocstestdebugindex.php                [line] => 10                [function] => three                [args] => Array                (                )          ),          [1] => Array        (               [file] => D:apmservwwwhtdocstestdebugindex.php               [line] => 6               [function] => two               [args] => Array                (                )          ),          [2] => Array        (               [file] => D:apmservwwwhtdocstestdebugindex.php               [line] => 3               [function] => one               [args] => Array                (                )          )    )*/  

二、debug_print_backtrace 它与之不同的是它会直接打印回溯信息.

三、匿名函数

从PHP 5.3开始新增了匿名函数(Anonymous functions),也叫闭包函数(closures),关键字 use 同时也在匿名函数中.

先看一下匿名函数的示例,作为回调函数的参数,代码如下:

<?php   echo  preg_replace_callback( '~-([a-z])~' ,  function  ( $match ) {        return   strtoupper ( $match [1]);       },  'hello-world'   );   // 输出 helloWorld    ?> 

连接闭包和外界变量的关键字:USE

闭包可以保存所在代码块上下文的一些变量和值,PHP在默认情况下,匿名函数不能调用所在代码块的上下文变量,而需要通过使用use关键字,代码如下:

function  test(){        $num  = 2;        $array  =  array (1,2,3,4,5,6,7,8);       print_r( array_filter ( $array ,  function ( $param )   use  ( $num ){        return   $param  %  intval ( $num ) ==0; })   );}  //开源代码phpfensi.com   test();

查看更多关于php debug_backtrace、debug_print_backtrace和匿名函数 -的详细内容...

  阅读:38次