эй все, я время от времени использую array_map для записи рекурсивных методов. например
function stripSlashesRecursive( $value ){ $value = is_array($value) ? array_map( 'stripSlashesRecursive', $value) : stripslashes( $value ); return $value; }
Вопрос:
скажем, я хочу поместить эту функцию в статический класс, как бы я использовал array_map обратно в область статического метода в классе, таком как Sanitize :: stripSlashesRecursive (); Я уверен, что это просто, но я просто не могу это выяснить, посмотрел и на php.net.
При использовании метода класса в качестве обратного вызова для таких функций, как array_map()
и usort()
, вам необходимо отправить обратный вызов как usort()
массив. Второе значение всегда является именем метода в виде строки. Первое значение – это контекст (имя класса или объект)
// Static outside of class context array_map( array( 'ClassName', 'methodName' ), $array ); // Static inside class context array_map( array( __CLASS__, 'methodName' ), $array ); // Non-static outside of object context array_map( array( $object, 'methodName' ), $array ); // Non-static inside of object context array_map( array( $this, 'methodName' ), $array );
array_map
качестве первого параметра array_map
принимает обратный вызов .
И обратный вызов статического метода записывается следующим образом:
array('classname', 'methodname')
Это означает, что в вашем конкретном случае вы будете использовать:
array_map(array('stripSlashesRecursive', ''), $value);
Дополнительные сведения о обратных вызовах см. В этом разделе руководства по PHP: псевдотипы и переменные, используемые в этой документации – обратный вызов .
array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...