开发者

How to use an object method as a callback function

开发者 https://www.devze.com 2023-01-09 08:50 出处:网络
I have the below method in a singleton class private function encode($inp) { if (is_array($inp) { return array_map(\'$this->encode\', $inp);

I have the below method in a singleton class

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 '';
    }
}

this works fine as an ordinary function

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 '';
    }
}

when using inside a class i'm getting the below error:

PHP Warning: array_map(): The first argument, 开发者_高级运维'$this->rfc_encode', should be either NULL or a valid callback

Please could anybody help me to fix this.


From PHP Manual on Callbacks:

A method of an instantiated object is passed as an array containing an object at index 0 and the method name at index 1.

So try

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


Release the single code from $this->encode.

> 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 '';
>     } }

Hope that clears the issue.

0

精彩评论

暂无评论...
验证码 换一张
取 消