champ d'array_map php mise
Question
hey, j'utiliser array_map de temps en temps d'écrire des méthodes récursives. par exemple
function stripSlashesRecursive( $value ){
$value = is_array($value) ?
array_map( 'stripSlashesRecursive', $value) :
stripslashes( $value );
return $value;
}
Question:
dire que je veux mettre cette fonction dans une classe statique, comment pourrais-je utiliser de nouveau array_map à la portée de la méthode statique dans la classe comme Désinfecter :: stripSlashesRecursive (); Je suis sûr que cela est simple, mais je ne peux pas juste figgure dehors, regarda php.net ainsi.
La solution
Lors de l'utilisation d'une méthode de classe comme un rappel pour des fonctions comme array_map()
et usort()
, vous devez envoyer le rappel sous forme de tableau à deux valeurs. La 2ème valeur est toujours le nom de la méthode en tant que chaîne. La 1ère valeur est le contexte (nom de la classe ou de l'objet)
// 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 );
Autres conseils
array_map
prend callback en tant que premier paramètre.
Et un rappel à une méthode statique est écrit comme ceci:
array('classname', 'methodname')
Ce qui signifie que, dans votre cas, vous pouvez utiliser:
array_map(array('stripSlashesRecursive', ''), $value);
Pour plus d'informations sur callbacks , voir cette section du manuel PHP: noreferrer pseudo-types et les variables utilisées dans cette documentation -. rappel
array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...