网站地图    收藏   

主页 > php专栏 > php函数大全 >

php debug_backtrace、debug_print_backtrace和匿名函数 -

来源:自学PHP网    时间:2014-11-25 00:26 作者: 阅读:

[导读] debug_print_backtrace,与之不同的是它会直接打印回溯信息 debug_print_backtrace() 是一个很低调的函数,很少有人注意过它 不过当我对着一个对象调用另一个对象再调用其它的对象和文件中的一个...

php debug_backtrace、debug_print_backtrace和匿名函数

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

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

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

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

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

  1. one();  
  2. function one() {    two();     }  
  3. function two() {    three();  }  
  4. function three() {    print_r( debug_backtrace() );   }  
  5. /*输出:  
  6. Array(  
  7.      [0] => Array        (  
  8.             [file] => D:apmservwwwhtdocstestdebugindex.php  
  9.             [line] => 10  
  10.             [function] => three  
  11.             [args] => Array                (                )  
  12.       ),  
  13.       [1] => Array        (  
  14.            [file] => D:apmservwwwhtdocstestdebugindex.php  
  15.            [line] => 6  
  16.            [function] => two  
  17.            [args] => Array                (                )  
  18.       ),  
  19.       [2] => Array        (  
  20.            [file] => D:apmservwwwhtdocstestdebugindex.php  
  21.            [line] => 3  
  22.            [function] => one  
  23.            [args] => Array                (                )  
  24.       )  
  25. )*/ 

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

三、匿名函数

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

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

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

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

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

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

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论