我正在尝试开发我的第一个Laravel (5)应用程序,可以通过插件进行扩展。我已经读了很多关于插件架构的文章,但是我正在挣扎的是在Laravel组织这样一个项目的最好的或者更好的方法。我非常感谢这里的任何帮助和建议,因为我不想走上错误的道路。
下面是我对构建和实现这一点的想法:
/ Plugins
- PluginManager.php
/ Contracts
- PluginInterface.php
/ Plugins
/ ExamplePlugin1
- ExamplePlugin1.php
/ ExamplePlugin2
- ExamplePlugin2.php问题1:位于何处是根目录/Plugins的最佳位置?直接在app/ root文件夹中还是像app/Http之类的地方?
在应用程序启动时,我希望PluginManager类扫描Plugins/ plugins /子目录,因为所有已安装的插件都在那里。此时,PluginManager将创建这些插件类的反射实例,并将它们存储在数组中,以便以后可以遍历它们,如果它们存在,则调用它们的方法。
问题2:,因为我希望PluginMananger对所有请求都可用,我应该为此使用服务提供者和外观吗?
问题3:这种方法有效吗?或者有人能提供一个替代的解决方案?
所有这些插件都将实现PluginInterface接口,以便PluginManager类可以对所有插件调用init()函数。
耽误您时间,实在对不起
发布于 2015-05-22 10:07:22
问题1
最简单的方法是创建一个目录"app/ plugins“(只有当您的插件特定于Laravel核心应用程序或路由"app/Http/Plugins”:“将控制台和Http目录视为为应用程序的”核心“提供API时,才能使用它)。”
问题2
是的!@见:使用延迟提供程序的性能问题
问题3
您是否可以在应用程序根目录中创建一种plugins.lock,以避免在每个请求上扫描"app/Plugins“?
https://stackoverflow.com/questions/28431885
复制相似问题