usar una otro metodos llamar funciones estaticos ejemplos desde cuando como clases clase archivo php oop callback array-walk

una - funciones php return



¿Cómo uso un método de clase como una función de devolución de llamada? (3)

Si uso array_walk dentro de una función de clase para llamar a otra función de la misma clase

class user { public function getUserFields($userIdsArray,$fieldsArray) { if((isNonEmptyArray($userIdsArray)) && (isNonEmptyArray($fieldsArray))) { array_walk($fieldsArray, ''test_print''); } } private function test_print($item, $key) { //replace the $item if it matches something } }

Me da el siguiente error:

Advertencia: array_walk() [function.array-walk]: no se puede llamar a test_print() - la función no existe en ...

Entonces, ¿cómo especifico $this->test_print() mientras uso array_walk() ?


Para llamar a un método de clase como una función de devolución de llamada en otro método de clase, debe hacer:

public function compareFucntion() { } public function useCompareFunction() { usort($arrayToSort, [$this, ''compareFucntion'']) }


Si desea especificar un método de clase como una devolución de llamada, debe especificar el objeto al que pertenece:

array_walk($fieldsArray, array($this, ''test_print''));

Del manual :

Un método de un objeto instanciado se pasa como una matriz que contiene un objeto en el índice 0 y el nombre del método en el índice 1.

Visite http://www.ideone.com/oz3Ma para ver esto en acción.


Si necesita llamar a un método estático sin crear una instancia de la clase, puede hacerlo:

// since PHP 5.3 array_walk($fieldsArray, ''self::test_print'');

O desde afuera:

// since PHP 5.5 array_walk($fieldsArray, User::class.''::test_print'');