PHP的Callback与其在WP中的使用

> 小邪今天研究下 WordPress 的 Callback 回调函数,因为之前在万戈兄那里看到有关的文章
> 结果还是没搞懂,万戈兄说:“回调就是先定义一个函数,然后引用它,就是这么简单。”

> 那么小邪就一边学习研究一下回调函数的概念和作用,一边总结一下,(*^__^*) 嘻嘻。
> P.s. 小邪生病,变成了春哥附身,曾哥附体,拉灯再世,破轮二代,火云邪神弟子,哇卡卡。

一. PHP回调函数:

1. 伪类型和文档中使用的变量:

> 字符,表示一个参数可以使用多种不同(但不一定是所有的)PHP 参数的字符类型。
> 数字,表示一个参数可以使用整型数字,也可以使用浮点数值(一种数字类型)。
> 回调,表示一些函数,像 Call_user_func() 或 Usort() 可以接受用户定义的回调函数。

> 把这个回调函数作为本函数的参数。回调函数不是普通的函数,而是面向对象的方法。
> 这些面向对象的方法里面还可以包含静态方法(小邪会在下面为静态方法专门写一个简述)。

> 每个 PHP 函数的调用都是通过我们为它们指定的一些以字符串形式存储的名称。
> 任何内置或者用户定义的函数都可以这样使用,除了一些 PHP 内部保留的函数名称。
> 比如 Array() Echo() Empty() Eval() Exit() Isset() List() Print() Unset() 这些函数名称。

2. 什么是静态方法:

> 小邪举一个很容易理解静态方法的例子,比网上其他让人头疼的理论要好一点儿,呵呵。
> 这里输出的结果应该是 “1 1 1 1 1 1”,因为在函数中的一般变量是不会改变的。

1
2
function test() { $n = 1; echo $n.' '; $n++; }  
test(); test(); test(); test(); test(); test();

> 而在这里使用了 Static 静态方法之后,输出的就是 “1 2 3 4 5 6” 这个样子的结果了。

1
2
function test() { static $n = 1; echo $n.' '; $n++; }  
test(); test(); test(); test(); test(); test();

3. Implode函数:

> 语法 - implode(separator,array) 作用是将 Array 变成一个字符串并以 separator 隔开。

1
2
3
$arr = array('Hello','World!','Beautiful','Day!');
echo implode(" ",$arr);
//输出 Hello World! Beautiful Day!

4. 回调函数:

> 回调函数实际上就是在调用某个函数(通常可以这样做的函数,被称为 API 函数)时。
> 将自己的一个函数(这个函数才是被称为回调函数的)的地址作为参数传递给那个函数。

1
2
3
4
5
6
7
$double = function($a) { return $a * 2; };
//这里把函数存在一个变量里面,( ⊙o⊙ ),真是强大的方法。
$numbers = range(1, 5);
//随机得到 1-5 之内的数字,并存在变量 $numbers 之中。
$new_numbers = array_map($double, $numbers);
//这里回调了函数,将参数二中的数组,交给了参数一中的函数来处理。
print implode(' ', $new_numbers);

> 小邪在某本 PDF 中看到过这样一段话 -

> 回调和 API 的概念非常接近,但区别是 API 是低层提供给高层的调用。
> 一般这个函数对高层都是已知的;而回调正好相反,他是高层提供给底层的调用。
> 对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的 API。
> 安装后低层不知道这个回调的名字,但它通过一个函数指针来保存这个回调函数,
> 在需要调用时,只需引用这个函数指针和相关的参数指针。

二. WP中的回调函数:

1. Wp_list_comments:

> 若需要让 Wp_list_comments 函数来回调函数,就这样用 wp_list_comments($args);。

1
2
3
4
5
$args = array(
    'walker' => null, 'max_depth' => , 'style' => 'ul', 'callback' => null,
    'end-callback' => null, 'type' => 'all', 'page' => , 'per_page' => ,
    'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => 
);

2. Wp_list_comments 回调函数参数:

> Avatar_size - 以像素为单位的评论者头像尺寸,默认值是 32px。
> Style - 我们可以自由定义评论列表使用的代码格式('div', 'ol', or 'ul'),默认 Ul。
> Type - 输出的内容类型('all', 'comment', 'trackback', 'pingback'),默认 All。
> Reply_text - 回复评论的提示语,默认值为 'Reply'(英文版)和 '回复'(中文版)。
> login_text - 这个是用于提示用户必须登陆后评论的语句,默认值为 'Log in to Reply'。
> Callback - 呵呵,亮点来了,在这个地方咱们就可以把回调函数给输入进去鸟。

> 传送门 - http://codex.wordpress.org/Template_Tags/wp_list_comments

> P.s. 小邪今天发现《24小时第八季》出来鸟,人人第一集字幕也搞定了,真开心,下载咯。

Leave a comment

83 Comments.

  1. Hailo 坐沙发!#1

    沙发?? :mrgreen:

  2. Auston Jary 坐板凳!#2

    邪老师,俺又来学习了 :smile:

  3. 阿吴 躺地板!#3

    这个意思 就是递归吧

    • @阿吴 , 额,可能有点像,但是准确说应该不算吧 ~
      是你提供它方法和参数,然后它用方法处理参数,给你结果 ~ :smile:

  4. 万戈 天花板!#4

    研究的好透彻呀。。。。拜倒,佩服

  5. 柳城 下水道!#5

    我看得似懂非懂的样子..哈哈.. :cry:

  6. 哎呀,整点新手入门型的,这个太高深了。。。 :exclaim:

  7. 唉,我总是看不懂啊看不懂,然而,可是,但是,不妨碍偶给你小窝留脚印的决心,呵呵!

  8. 每天都PHP啊!加油,坚持!

  9. 我不看别的就看最后那张了! :mrgreen: :mrgreen:

  10. array array_map ( callback $callback , array $arr1 [, array $... ] )
    使用倒是会了。。怎么实现这个回调函数却不知道(为什么可以传递一个方法?)

    • @fatkun , 这样理解,是把一个函数放到一个变量里 ~
      然后把这个变量和这个变量所需的参数给 Array_map ~
      然后 Array_map 会用这个变量带来的函数去处理参数并返回结果 ~

      • @邪 罗刹,
        我是想问怎么写一个带回调函数参数的方法。
        类似这些方法:
        Array_map ( callback $callback , array $arr1 [, array $... ] )
        wordpress的Wp_list_comments方法?

    • @fatkun , 呵呵,解释起来比较长,小邪下篇文章里写一下哈 ~

  11. 呃,我是来研究图的,嘎嘎 :cool:

  12. 如果在图床研究方面有重大进展的话,记得通知我啊~
    技术方面的我就确实没办法去学习了,对我来说难度太大了~

  13. 我觉得你应该先把这个call back用起来,这样我们就看到效果了!
    ps:24小时已经出了2集了哦~
    还有,今天的mM,哥我不满意~ :evil:

  14. 真厉害啊。看到万哥那篇吧。。

  15. 越玩越高级了。。。
    膜拜代码帝~~

  16. :mad: 我是来看最后一张图的!

  17. Kimozi~~小邪,黄绿橙满buff复活鸟,现在网通100M独享。。噢耶~~
    速度比以前快多了~ :redface:

  18. 第八季出来了?!!!!!我靠靠靠靠!!
    我等这东西等了n久了哇~~
    哈哈 又要开始追新看美剧的日子啦 :cry: :cry: :cry: :cry: :cry: :idea: :idea: :idea: :idea:

  19. 呵呵,好几天没来了
    看来好多都是来看最后一张图片的啊,那个是亮点

  20. 小邪JAVA怎么样?能否教教我,我最近可能要搞编程了,到时候得请教你

  21. 图片很黄很暴力 嘿嘿~

  22. 小邪.....貌似这就是你的游戏了

  23. 来屁啊实验室看看 :cool:

  24. 太过于深奥,老师来写简易一些的。。

  25. 一起学习php啊~ 你丫肯定是电脑前坐多了,要运动啊,身体第一的!

  26. 过来收录你的博客的,特此告知,呵呵。

  27. "春哥附身,曾哥附体,拉灯再世,破轮二代,火云邪神弟子",那岂不是比阿凡达还牛B?!

  28. 不是看得很懂。

  29. CallBack与API我也了解过一点,博客上调用的微博内容不就是CallBack么,是下层使用上层所以叫API,是吧。呵呵,这回又了解了一些。 :biggrin:

  30. 回调函数文档里都说不推荐使用的,不过国内好像都用的很high

Leave a Reply

:evil: :razz: :wink: :rolleyes: :redface: :cry: :biggrin: :lol: :idea: :mrgreen: :mad: :exclaim: more »

[ Ctrl + Enter ]

Trackbacks and Pingbacks: