Ich habe gerade in WordPress-Code geschaut und diese Definition von add_action gefunden:
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
return add_filter($tag, $function_to_add, $priority, $accepted_args);
}
Warum verschwenden wir nun einen CPU-Zyklus, um nur eine andere Funktion aufzurufen, die wir einfach selbst ausführen können, und müssen uns dann nicht zwei verschiedene Funktionsnamen für dieselbe Sache merken.
Antworten:
Aktionen machen Dinge. Filter ändern Dinge. Sie führen Dinge in einer Aktion aus, während Sie beim Anwenden eines Filters keine Ereignisse oder Aktionen erwarten, außer der Änderung des zu filternden Werts. zB Es ist nicht in Ordnung, eine E-Mail zu senden oder einen DB-Wert in einem Filter zu speichern, aber in einer Aktion ist es in Ordnung. Es kann seltene Momente geben, in denen Sie gegen diese Konvention verstoßen müssen, aber sie ist nützlich und notwendig.
Indem Sie alle
add_action
unddo_action
Aufrufe durch ihre Filter-Gegenstücke ersetzen , entfernen Sie die Unterscheidung und erzwingen das Wissen darüber, ob Namen wie'the_content'
usw. Aktionen oder Filter außerhalb der Welt und in Ihrem Gedächtnis sind, was zu Fehlern führt.Anstatt Ihren Code schwerer lesbar zu machen, sollten Sie sich darüber im Klaren sein, dass wenn Ihr Code langsam ist, dies nicht daran liegt, dass Sie hier und da nicht ein oder zwei Anweisungen rasiert haben, sondern entweder an Ihrem langsamen Server oder an Ihrer algorithmischen Struktur Ihres Codes und die Art der Daten, die verarbeitet werden. Sie würden viel mehr davon haben, Ihre Prozesse umzugestalten, die Hardware zu aktualisieren oder Ihre Paradigmen zu ändern. Im großen Schema der Dinge ist eine langsame Site höchstwahrscheinlich langsam, weil sie viel tut oder schlecht geschriebene Abfragen hat, z. B. Post-Abfragen, die auf Meta basieren, oder
__not_in
TypabfragenWenn WordPress ausgeführt wird, führt PHP Millionen von Anweisungen aus. Das Austauschen von Aktionen gegen Filter würde kaum zu einer Beule im oberen Tausendstel eines Perzentils führen.
http://fabien.potencier.org/article/8/print-vs-echo-which-one-is-faster
Wenn Sie es wirklich versuchen möchten, schauen Sie sich an, wie der Typ die VLD verwendet hat, und testen Sie Ihre Theorie selbst.
quelle