gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:51:47 25 4
gpt4 key购买 nike

我正在尝试开发我的第一个可以通过插件扩展的 Laravel (5) 应用程序。我已经阅读了很多关于插件架构的文章,但我一直在努力寻找在 Laravel 中组织此类项目的最佳或首选方式。如果我在这里得到任何帮助和建议,我将不胜感激,因为我不想走上错误的道路。

以下是我考虑构建和实现它的方式:

/ Plugins
- PluginManager.php

/ Contracts
- PluginInterface.php

/ Plugins

/ ExamplePlugin1
- ExamplePlugin1.php

/ ExamplePlugin2
- ExamplePlugin2.php

问题 1: 放置根/Plugins 目录的最佳位置在哪里?直接在 app/根文件夹或类似 app/Http 的地方?

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

问题 2:因为我希望 PluginMananger 可用于所有请求,我应该为此使用服务提供者和 Facade 吗?

问题 3:这种方法是否有效,或者有人可以提供替代解决方案吗?

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

谢谢你的时间

最佳答案

问题一

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

问题二

是的!@看:performance issue using deferred providers

问题三

也许你可以在你的应用程序根目录中制作一种 plugins.lock 以避免在每次请求时扫描“app/Plugins”?

关于php - Laravel 5 项目结构(插件系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com