问题描述

我刚刚看了一下 wordpress 代码,发现了 add_action 的这个定义:

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

现在为什么我们浪费一个 CPU 周期来调用另一个函数,我们可以简单地做自己,然后我们不必为同一个事情记住两个不同的函数名。

最佳解决方案

行动做事情过滤器修改事物。您在操作中执行操作,而如果应用过滤器,则不会发生任何事件或操作,除了要过滤的值的更改。例如发送电子邮件或将数据库值保存在过滤器中是不正确的,但在操作中可以使用。当您需要违反此惯例时,可能会有罕见的时刻,但这是一个有用和必要的规则。

通过用过滤器替换所有 add_action 和 do_action 调用,您可以删除这些区别,并强制将诸如’the_content’ 等的操作或过滤器的知识等同于世界各地的操作或过滤器,并鼓励错误。

所以不是让你的代码更难阅读,而是意识到,如果你的代码很慢,那并不是因为你没有在这里和那里刮胡子,要么是缓慢的服务器,要么是代码的算法结构,正在处理的数据的性质。您将获得更多的重构过程,升级硬件或更改您的范例。

从 WordPress 运行的角度来说,PHP 执行数百万条指令。交换过滤器的操作几乎不会陷入百分位数的千分之一。

http://fabien.potencier.org/article/8/print-vs-echo-which-one-is-faster

I have tried on a fresh WordPress installation. The script halts before it ends with a “Bus Error” on my laptop, but the number of opcodes was already at more than 2.3 millions. Enough said.

如果你真的想尝试一下,看看这个人如何使用 VLD,并为自己测试你的理论。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。