Que vaut-il la peine d'utiliser add_action quand on peut simplement utiliser add_filter?

10

Je viens de regarder dans le code wordpress et j'ai trouvé cette définition de add_action:

function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
    return add_filter($tag, $function_to_add, $priority, $accepted_args);
}

Maintenant, pourquoi perdons-nous un cycle de processeur pour appeler simplement une autre fonction que nous pouvons simplement faire nous-mêmes et nous n'aurons pas à nous rappeler deux noms de fonction différents pour la même chose.

    
posée Gagan 12.04.2012 - 11:16

1 réponse

9

Les actions font les choses. Les filtres modifient les choses. Vous faites des choses dans une action, alors que si vous appliquez un filtre, vous ne vous attendez pas à ce que des événements ou des actions se produisent, autres que la modification de la valeur que vous filtrez. par exemple. Envoyer un courrier électronique ou enregistrer une valeur de base de données dans un filtre n’est pas acceptable, mais cela convient dans une action. Il peut y avoir de rares moments où vous devez violer cette convention, mais il s’agit d’un moment utile et nécessaire.

En remplaçant tous les appels add_action et do_action par leurs homologues filtres, vous supprimez la distinction et forcez la connaissance des noms tels que 'the_content' etc. sont des actions ou des filtres hors du monde, et dans votre mémoire, vous encouragez. erreurs.

Donc, au lieu de rendre votre code plus difficile à lire, réalisez que si votre code est lent, ce n'est pas parce que vous n'avez pas rasé une instruction ou deux ici et là, c'est votre serveur lent ou votre structure algorithmique votre code et la nature des données manipulées. Vous obtiendrez beaucoup plus de la refactorisation de vos processus, de la mise à niveau du matériel ou de la modification de vos paradigmes. Dans le grand schéma des choses, un site lent est probablement lent car il pose beaucoup de questions ou a des requêtes mal écrites, par exemple. publiez des requêtes qui reposent sur des méta ou __not_in des requêtes de type

Pour mettre les choses en perspective, lorsque WordPress s'exécute, PHP exécute des millions d'instructions. Échanger des actions contre des filtres aurait à peine une incidence sur le millième de centile supérieur.

enlace

  

J'ai essayé une nouvelle installation de Wordpress. Le script s'arrête   avant qu'il se termine avec une "erreur de bus" sur mon ordinateur portable, mais le nombre de   les opcodes étaient déjà à plus de 2,3 millions . Assez dit.

Si vous voulez vraiment essayer, regardez comment le gars a utilisé le VLD et testez votre théorie par vous-même.

    
réponse donnée Tom J Nowell 12.04.2012 - 11:39

Lire d'autres questions sur les étiquettes