Как использовать метод объекта как функцию обратного вызова

У меня есть метод ниже в одноэлементном классе

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 Warning: array_map (): первый аргумент, '$ this-> rfc_encode', должен быть либо NULL, либо действительным обратным вызовом

Пожалуйста, кто-нибудь может помочь мне исправить это.

Solutions Collecting From Web of "Как использовать метод объекта как функцию обратного вызова"

Из руководства PHP по обратным вызовам :

Метод объекта-объекта передается как массив, содержащий объект с индексом 0 и имя метода в индексе 1.

Поэтому постарайтесь

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

Отпустите один код из $ 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 ''; > } } 

Надеюсь, что это устраняет проблему.