如何使用对象方法作为回调函数

时间:2010-07-28 07:29:53

标签: php

我在单件类中有以下方法

private function encode($inp)
{
    if (is_array($inp) {
        return array_map('$this->encode', $inp);
    } else if is_scalar($inp) {
        return str_replace('%7E', rawurlencode($inp));
    } else {
        return '';
    }
}

这可以作为一个普通的功能

function encode($inp)
{
    if (is_array($inp) {
        return array_map('encode', $inp);
    } else if is_scalar($inp) {
        return str_replace('%7E', rawurlencode($inp));
    } else {
        return '';
    }
}

在课堂内使用时,我收到以下错误:

  

PHP警告:array_map():第一个   参数,'$ this-> rfc_encode',应该   是NULL还是有效的回调

请有人帮我解决这个问题。

2 个答案:

答案 0 :(得分:22)

来自PHP Manual on Callbacks

  

实例化对象的方法作为包含索引0处的对象和索引1处的方法名称的数组传递。

所以试试

return array_map(array($this, 'encode'), $inp);

答案 1 :(得分:-4)

$ this->编码发布单个代码。

> private function encode($inp) {
>     if (is_array($inp) {
>         return array_map($this->encode, $inp);
>     } else if is_scalar($inp) {
>         return str_replace('%7E', rawurlencode($inp));
>     } else {
>         return '';
>     } }

希望能解决这个问题。