Pregunta

Hola a todos, yo uso array_map de vez en cuando para escribir métodos recursivos. por ejemplo

function stripSlashesRecursive( $value ){

    $value = is_array($value) ?
        array_map( 'stripSlashesRecursive', $value) :
    stripslashes( $value );
    return $value;
}

Pregunta:

decir quiero poner esta función en una clase estática, ¿Cómo puedo utilizar array_map de nuevo al alcance del método estático en la clase como Desinfección :: stripSlashesRecursive (); Estoy seguro de que esto es simple pero simplemente no puede figgure a cabo, se veía en php.net también.

¿Fue útil?

Solución

Cuando se utiliza un método de clase como una devolución de llamada para funciones como array_map() y usort(), usted tiene que enviar la devolución de llamada como un array de dos valores. El segundo valor es siempre el nombre del método como una cadena. El valor primero es el contexto (nombre de la clase u objeto)

// 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 );

Otros consejos

array_map toma un callback como primer parámetro.

Y una devolución de llamada a un método estático se escribe así:

array('classname', 'methodname')


Lo que significa que, en su caso específico, tendrá que utilizar:

array_map(array('stripSlashesRecursive', ''), $value);


Para más información sobre devoluciones de llamada , ver esta sección del manual de PHP: Pseudo-tipos y variables usadas en esta documentación -. devolución de llamada

array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top