¿Cuál es el valor de usar add_action cuando simplemente podemos usar add_filter?

10

Acabo de ver el código de wordpress y encontré esta definición 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);
}

Ahora, ¿por qué estamos desperdiciando un ciclo de CPU solo por llamar a otra función que podemos hacer nosotros mismos y entonces no tendremos que recordar dos nombres de función diferentes para la misma cosa?

    
pregunta Gagan 12.04.2012 - 11:16

1 respuesta

9

Las acciones hacen cosas. Los filtros modifican las cosas. Usted hace cosas en una acción, mientras que si aplica un filtro, no espera que ocurran eventos o acciones, aparte de la modificación del valor que está filtrando. p.ej. No está bien enviar un correo electrónico o guardar un valor de base de datos en un filtro, pero está bien en una acción. Puede haber momentos raros en los que deba violar esta convención, pero es útil y necesario.

Al reemplazar todas las llamadas add_action y do_action con sus homólogos de filtro, elimina la distinción y fuerza el conocimiento de si los nombres como 'the_content' etc. son acciones o filtros fuera del mundo, y en su memoria, alentando errores.

Entonces, en lugar de hacer que tu código sea más difícil de leer, date cuenta de que si tu código es lento, no es porque no hayas afeitado una o dos instrucciones aquí y allá, es tu servidor lento o tu estructura algorítmica de Su código y la naturaleza de los datos que se manejan. Obtendría mucho más de refactorizar sus procesos, actualizar el hardware o cambiar sus paradigmas. En el gran esquema de cosas, lo más probable es que un sitio lento sea lento porque hace mucho o tiene consultas mal escritas, por ejemplo. publicar consultas que se basen en consultas de tipo meta o __not_in

Para ponerlo en perspectiva, cuando se ejecuta WordPress, PHP ejecuta millones de instrucciones. El intercambio de acciones por filtros apenas haría mella en la milésima superior de un percentil.

enlace

  

He intentado en una nueva instalación de Wordpress. El guión se detiene   antes de que termine con un "Error de bus" en mi computadora portátil, pero el número de   opcodes ya estaba en más de 2.3 millones . Ya he dicho suficiente.

Si realmente quieres probar, observa cómo el tipo usó el VLD y prueba tu teoría por ti mismo.

    
respondido por el Tom J Nowell 12.04.2012 - 11:39

Lea otras preguntas en las etiquetas