Frage

hey alle, ich von Zeit zu Zeit verwenden array_map rekursive Methoden zu schreiben. zum Beispiel

function stripSlashesRecursive( $value ){

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

Frage:

sagen, dass ich diese Funktion in einer statischen Klasse setzen wollen sie zu, wie würde ich array_map zurück auf den Umfang der statischen Methode in der Klasse wie Sanitize verwenden :: stripSlashesRecursive (); Ich bin sicher, dies ist einfach, aber ich es einfach nicht figgure aus, sah php.net auch.

War es hilfreich?

Lösung

Wenn eine Klassenmethode als Callback für Funktionen wie array_map() und usort() verwenden, müssen Sie den Rückruf als Zweiwert Array senden. Der zweite Wert ist immer der Name der Methode als String zurück. Der erste Wert ist der Kontext (Klassenname oder das Objekt)

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

Andere Tipps

array_map nimmt eine Rückruf als ersten Parameter.

Und ein Rückruf zu einer statischen Methode wird wie folgt geschrieben:

array('classname', 'methodname')


Was bedeutet, dass, in Ihrem speziellen Fall, dann würden Sie verwenden:

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


Für weitere Informationen über Rückrufe finden Sie in diesem Abschnitt der PHP-Handbuch: Pseudo-Typen und Variablen in dieser Dokumentation verwendet -. Rückruf

array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top