2010-05-14 5 views
4

je tentais d'utiliser array_walk_recursive pour quelque chose, et je voulais utiliser l'une des méthodes de classe comme le rappel, essayant ainsi:PHP: En utilisant une méthode comme un rappel

array_walk_recursive($TAINTED, "$this->encode()"); 

et des variations de ceux-ci ont tous échoué . J'ai finalement installé pour:

array_walk_recursive($TAINTED, 'className::encode'); 

qui fonctionne, mais je l'ai lu sur ce site que l'appel des méthodes de classe d'une manière statique comme celui-ci est souvent considérée comme une mauvaise pratique. Ou est-ce une de ces situations où il est nécessaire?

Alors, est-ce la bonne façon de s'y prendre, ou est-il un moyen de mettre dans la fonction de rappel sans avoir à se replier à l'utiliser comme une méthode statique?

Répondre

12
array_walk_recursive($TAINTED, array($this, 'encode')); 
1

Je sais que ce fil est vieux, mais en lisant vos mots « appelant les méthodes de classe d'une manière statique comme celui-ci est souvent considéré comme une mauvaise pratique » Je dois dire que les fonctions statiques sont une bonne pratique lorsqu'ils sont utilisés pour la bonne tâche. Cadres comme Laravel et Symphony montre le véritable potentiel des méthodes statiques.

Quoi qu'il en soit quand vous n'êtes pas peur d'utiliser des méthodes statiques, vous pouvez appeler votre méthode en utilisant auto au lieu de spécifier le nom de classe qui pourrait changer au cours du processus de développement.

array_walk_recursive($TAINTED, 'self::encode'); 
Questions connexes