Laravel 5项目结构(插件系统)

时间:2015-02-10 12:37:24

标签: php laravel plugins directory-structure laravel-5

我正在尝试开发我的第一个可以通过插件扩展的Laravel(5)应用程序。我一直在阅读很多关于插件架构的内容,但我正在努力解决的是最佳或在Laravel中组织这样一个项目的首选方式。我非常感谢这里的任何帮助和建议,因为我不想走错路。

以下是我在考虑构建和实现这个问题的方法:

/ Plugins
    - PluginManager.php

    / Contracts
        - PluginInterface.php

    / Plugins

        / ExamplePlugin1
            - ExamplePlugin1.php

        / ExamplePlugin2
            - ExamplePlugin2.php

问题1: 哪里可以找到root / Plugins目录的最佳位置?直接在app / root文件夹中或app / Http?

之类的地方

在应用启动时,我希望PluginManager类扫描插件/插件/子目录,因为所有已安装的插件都将驻留在该目录中。此时,PluginManager将创建这些插件类的反射实例,并将它们存储在一个数组中,以便以后可以循环遍历它们并在它们存在时调用它们。

问题2: 由于我希望PluginMananger可用于所有请求,我是否应该使用服务提供商和Facade?

问题3: 此方法有效还是有人可以提供其他解决方案?

所有这些插件都将实现PluginInterface接口,以便PluginManager类可以调用所有插件上的init()函数。

感谢您的时间

1 个答案:

答案 0 :(得分:1)

问题1

最简单的方法是创建一个目录" app / Plugins" (" app / Http /插件"仅当您的插件特定于Laravel核心应用程序或路由@RTM时:"想想控制台和Http目录为您的应用程序的核心提供API。" )。

问题2

YES! @see:performance issue using deferred providers

问题3

您可以在应用程序根目录中创建一种plugins.lock,以避免扫描" app / Plugins"在每个请求?