php - PHP 中的插件架构

标签 php architecture plugins

我正计划研究如何在 PHP 中实现插件架构。我曾尝试在网上搜索可能的引用资料,但我认为如果我在这里询问,也许我搜索好的引用资料会更快、更相关。

这里有没有人尝试过在 Web 项目中使用插件架构?

谢谢, 欧文

最佳答案

我写过 wordpress 插件,它们所依赖的魔法是“可变函数名”。例如,这是有效的 php,其中将调用函数调用 phpinfo():

$func_name="phpinfo";
$func_name();

这允许开发人员“ Hook ”函数调用,就像在不更改应用程序其余部分的情况下用自己的函数覆盖它们一样。 Linux 内核模块都是关于“ Hook ”的,没有这种行为它们将无法工作。

不幸的是,对于 PHP 来说,变量函数名是一种令人作呕的 hack,它会消耗大量资源。 namespace 中的所有函数都放在一个列表中,并且必须在调用函数之前搜索该列表,这是 O(log2(n))。另请记住,虽然代码仍将转换为有效的 C++,但变量函数名称无法在 HipHop 中正确加速。更好的方法是像在 python 中那样重新声明函数,这将是 O(1) 复杂度,但是 PHP 开发团队讨厌这个想法(是的,我已经要求这个功能了! ).

祝你好运!

关于php - PHP 中的插件架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315289/

相关文章:

architecture - 用于 AKKA Actor 框架?

architecture - 在哪里调用另一个微服务: Service or Repository layer?

c++ - 在 Linux 中使用 gdb 调试 Firebreath

performance - 有选择地禁止插件加载到 Wordpress 管理区域

javascript - 输入类型范围输出不适用于动态 ID

php - 同时使用 PDO 准备好的语句和 filter_var?

javascript - 分钟操作后 Momentjs 返回错误的日期

php - 为什么捕获的异常仍然会中断循环?我们怎样才能让它继续下去?

javascript - Backbone 和 Django,寻找更好的客户端架构

apache-spark - 使用自定义插件和调度框架优化 Kubernetes 上的 Apache Spark