Si j'utilise array_walk
Dans une fonction de classe pour appeler une autre fonction de la même classe
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
}
}
Cela me donne l'erreur suivante -
Avertissement:
array_walk()
[function.array-walk]: impossible d'appelertest_print()
- la fonction n'existe pas dans ...
Alors, comment puis-je spécifier $this->test_print()
tout en utilisant array_walk()
?
Si vous souhaitez spécifier une méthode de classe comme rappel, vous devez spécifier l'objet auquel elle appartient:
array_walk($fieldsArray, array($this, 'test_print'));
Depuis le manuel :
Une méthode d'un objet instancié est passée sous la forme d'un tableau contenant un objet à l'index 0 et le nom de la méthode à l'index 1.
Si vous devez appeler une méthode statique sans instancier la classe, vous pouvez le faire:
// since PHP 5.3
array_walk($fieldsArray, 'self::test_print');
Ou de l'extérieur:
// since PHP 5.5
array_walk($fieldsArray, User::class.'::test_print');
Pour appeler une méthode de classe en tant que fonction de rappel dans une autre méthode de classe, vous devez:
public function compareFucntion() {
}
public function useCompareFunction() {
usort($arrayToSort, [$this, 'compareFucntion'])
}