分组/封装跨多个php文件的相关功能

时间:2014-07-30 21:58:20

标签: php laravel laravel-4

我正在开发一款应用,该应用的部分功能是可通过插件进行扩展。

主应用程序使用了一个Render类,其中包含许多与输出有关的静态方法。实际的方法与模型/视图交互,但基本思想是Render类封装了渲染内容的方法,如:

// To output "hello"
Render::sayHello();

// To output a picture of a cat wearing a hat
Render::catWithHat();

现在,插件不时需要自己独特的 输出 功能。这些输出函数与Render方法非常相似。所以......

我的第一个想法是,如果我可以动态地将方法添加到Render类,那将会很棒,但在阅读了有关动态方法创建之后,听起来通常不会考虑非常好的做法。

然后我想,好吧,我可以不封装插件'渲染功能。因此,您只需将它们称为:

renderMyAddonOutput();
但是,我也不喜欢这个想法。

所以我想我只是想知道封装在各种文件中声明的相关函数的最佳做法。

思想?

注意:如果它有任何区别,我会使用Laravel(最新版​​本)。

1 个答案:

答案 0 :(得分:1)

我会考虑使用插件模式,其中附加组件在init上将自身注册到某种静态容器中,然后您可以使用PHP的魔术方法__call()__callStatic()来检查插件数组当调用在基类中找不到的方法时..

所以如果你有:

Render::pluginMethod()

然后__callStatic()将检查您的插件注册表(可以像插件类或方法的静态数组一样简单),如果它找到该方法,则调用/返回它。