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.

È stato utile?

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) ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top