У меня есть метод ниже в одноэлементном классе
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, либо действительным обратным вызовом
Пожалуйста, кто-нибудь может помочь мне исправить это.
Из руководства 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 ''; > } }
Надеюсь, что это устраняет проблему.