【发布时间】:2013-03-01 18:50:22
【问题描述】:
我正在开发一个供我公司使用的任务管理应用程序。规范的一部分是创建一个插件系统,允许用户根据需要或部门需要自定义和扩展功能。我很想以一种非常优雅和模块化的方式来做这件事,但我很难弄清楚如何做。
考虑一个任务列表视图:生成循环的每次迭代都会在任一端添加一个 pre_task() 和 post_task() 调用,这会在任务标题的任一端构建交互式片段(完成复选框、cmets 链接、 ETC)。现在,当系统检测到并包含插件文件 plugin_time_tracking.php 时,插件应该向 post_task() 添加功能 - 除了其他所有内容之外,还添加一个“跟踪时间”按钮。
我想要完成的是让插件“挂钩”到 pre_task() 或 post_task() - 让它通过将自身附加到适当的函数并扩展它们来完成所有的工作,而不是使用核心排序插件并将它们的功能集中到正确的位置。 PHP 是否提供这样的功能?我会以错误的方式解决这个问题吗?让我知道是否需要澄清 - 感谢您的帮助!
【问题讨论】:
-
装饰模式,是你想要的吗? (en.wikipedia.org/wiki/Decorator_pattern)