hey all, i use array_map from time to time to write recursive methods. for example
function stripSlashesRecursive( $value ){
$value = is_array($value) ?
array_map( 'stripSlashesRecursive', $value) :
stripslashes( $value );
return $value;
}
Question:
say i wanna put this function in a static class, how would i use array_map back to the scope of the static method in the class like Sanitize::stripSlashesRecursive(); Im sure this is simple but i just cant figgure it out, looked at php.net as well.
When using a class method as a callback for functions like array_map()
and usort()
, you have to send the callback as two-value array. The 2nd value is always the name of the method as a string. The 1st value is the context (class name or object)
// 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
takes a callback as its first parameter.
And a callback to a static method is written like this :
array('classname', 'methodname')
Which means that, in your specific case, you'd use :
array_map(array('stripSlashesRecursive', ''), $value);
For more informations about callbacks, see this section of the PHP manual : Pseudo-types and variables used in this documentation - callback.
array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...
来源:https://stackoverflow.com/questions/2329483/setting-scope-of-array-map-php