PHP 的 callback 类型

原文 : http://hdwong.com/articles/2009/06/00000044.html

在前一篇文章 深入 Drupal 引导流程 (3) - session_set_save_handler 中,提及到一种 callback 类型,在 PHP 原生类型里面并没有一种类型叫做 callback,按照官方文档的说法,callback 仅仅是在文档里面提及到的虚构类型 (伪类型)。callback 就是回调的意思,顾名思义它常被以参数的方式传递给其他函数,让别人来调用自己。PHP 的 callback 可以包括全局函数和类方法。

callback 的有效表示方法有以下几种

  1. 全局函数

    function bar($string)
    {
      echo $string;
    }
    call_user_func('bar', 'Hello world.');
    // 输出 Hello world.

  2. 对象方法

    class foo
    {
      function bar($string)
      {
        echo $string;
      }
    }
    $obj = new foo;
    call_user_func(array($obj, 'bar'), 'Hello world.');
    // 输出 Hello world.
    // PHP4 下 $obj 需要写成 &$obj,解析在文章最后

  3. 静态类方法

    class foo
    {
      static function bar($string)
      {
        echo $string;
      }
    }
    call_user_func(array('foo', 'bar'), 'Hello world.');
    // 输出 Hello world.
    call_user_func('foo::bar', 'Hello world.');
    // 同样也是输出 Hello world. 这种语法只适用于 PHP 5.2.3 以上

  4. 类内部调用

    class foo
    {
      function bar($string)
      {
        echo $string;
      }
      function callback()
      {
        call_user_func(array('self', 'bar'), 'Hello world.');
        // 输出 Hello world.
      }
    }
    foo::callback();

    以上是静态调用,如果是对象的内部调用,只需要改成

    call_user_func(array($this, 'bar'), 'Hello world.');

    注意 : 如果是 PHP 4,那么 $this 需要写成 &$this 来显式的传递引用,否则 PHP 会传递一个对象的拷贝过去的,而 PHP 5 后对象的传递默认就已经是引用了

本文仅使用 call_user_func 来举例 callback 的用法,实际中上述的表示方法可以在任何文档中标识为 callback 的类型,如 usortarray_map 等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个 JSON 格式的数据,其中包含了一个名为 "event_type" 的字段,它表示事件类型,这里的事件类型为 "active",表示用户激活了应用程序。 另外,该 JSON 数据中还包含了一个名为 "context" 的字段,它是一个字典类型的数据,包含了一些上下文信息,比如广告信息等。在这个示例中,"context" 字段中包含了一个名为 "ad" 的子字段,它也是一个字典类型的数据,用于存储与广告相关的信息,包括回调地址(callback)等。 最后,该 JSON 数据中还包含了一个名为 "timestamp" 的字段,它表示事件发生的时间戳,可以用于记录事件发生的时间。 如果你想对该 JSON 数据进行解析和处理,可以使用 PHP 的 JSON 解析库,比如 json_decode() 函数,将其转换为 PHP 数组或对象,然后根据需要进行处理。以下是一个使用 json_decode() 函数解析该 JSON 数据的示例代码: ```php // JSON 数据 $json = '{ "event_type": "active", "context": { "ad": { "callback": "EPHk9cX3pv4CGJax4ZENKI7w4MDev_4C" } }, "timestamp": 1604888786102 }'; // 解析 JSON 数据 $data = json_decode($json, true); // 获取事件类型 $event_type = $data['event_type']; // 获取广告回调地址 $callback = $data['context']['ad']['callback']; // 获取事件发生的时间戳 $timestamp = $data['timestamp']; // 处理事件数据 // ... ``` 以上代码中,使用 json_decode() 函数将 JSON 数据转换为 PHP 数组,然后从数组中获取事件类型、广告回调地址和时间戳等信息,最后根据需要进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值