modificando portata di php array_map
Domanda
Ciao a tutti, io uso array_map di volta in volta di scrivere metodi ricorsivi. ad esempio
function stripSlashesRecursive( $value ){
$value = is_array($value) ?
array_map( 'stripSlashesRecursive', $value) :
stripslashes( $value );
return $value;
}
Domanda:
dico che voglio mettere questa funzione in una classe statica, come potrei usare array_map di nuovo al campo di applicazione del metodo statico nella classe come Sanitize :: stripSlashesRecursive (); Sono sicuro che questo è semplice, ma ho appena cant figgure fuori, guardò php.net pure.
Soluzione
Quando si utilizza un metodo di classe come un callback per funzioni come array_map()
e usort()
, è necessario inviare il callback come array a due-valore. Il secondo valore è sempre il nome del metodo come una stringa. Il primo valore è il contesto (nome di classe o di un oggetto)
// 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 );
Altri suggerimenti
array_map
prende un callback come primo parametro.
E un callback a un metodo statico è scritto così:
array('classname', 'methodname')
Il che significa che, nel caso specifico, utilizza:
array_map(array('stripSlashesRecursive', ''), $value);
Per maggiori informazioni su callback , vedere questa sezione del manuale di PHP: noreferrer Pseudo-tipi e variabili utilizzate in questa documentazione -. richiamata
array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...