使用Laravel/PHP创建基于插件的系统,如Wordpress

Ars*_*rsi 8 plugins laravel modular-design

这个问题一直困扰着我很长一段时间,我想创建一个cms,一个更具体的学校管理系统,对我来说最重要的是,以管理员可以下载的方式制作这个系统插件并通过他们的管理面板安装插件,就像wordpress一样.

现在我已经阅读了关于wordpress Hooks,ActionsFilters的内容,而且说实话,我可以说我只是熟悉它们的功能,但是将相同的功能应用Laravel应用程序 ......,这有点难以理解出来,至少对我而言.

我也搜索了这个问题并发现几乎每个人都在推荐软件包,但是虽然软件包对于想要使用软件包功能的其他开发人员来说非常有用,但是不熟悉任何软件包的用户都无法轻松安装软件包.编程语言,这正是我在我的应用程序中想要的.

到目前为止,我在脑海中的想法,如在Wordpress操作过滤器中,几乎所有想要在Wordpress主题文件中使用的东西(为了使这段代码灵活地添加插件功能)应该被称为函数,并调用它Wordpress do_action()的功能是一种必须采取的路径,当然这是有道理的.

这样插件开发人员就可以在他们的文件中调用add_action()/ add_filter()并将他们的插件放入应用程序的流程中.所以...

基本上我在这里问的是:

  • 如何将这些功能应用于laravel应用程序?
  • 有没有比通过do_action()这样的函数调用所有内容更简单的方法?
  • 我应该编写某种文件管理模块来下载和更新插件吗?

我必须再次说我对wordpress方法不太熟悉以实现这种功能,所以我对上面提到的一些描述可能是错的,但是,如果可以的话,我感谢你对这个主题的任何澄清.

提前感谢您的任何见解.

*PS我试图尽可能清楚地解决这个问题,而且我并没有为我正在开发的系统寻找任何特定的方法.我想要的是知道实现这种功能的Common/Best方法(如果有最好的方法),最好是在Laravel中,但仍然非常感谢一般算法.

我知道很多人都有同样的问题并且正在处理同样的问题,所以如果你甚至只提供一篇有用文章的链接,那就太棒了.*

pra*_*hal 8

我一直作为Wordpress开发人员工作了很长时间,而且我在Laravel也有足够的经验......说实话,制作这种功能并不是那么困难.

怎么样?

首先,您必须了解您将要制作的Web应用程序将具有所有功能,但只能从前端启用/禁用它们(管理面板/仪表板).换句话说,您的学校管理系统应用程序实际上已预先安装了所有功能/功能,但您只是允许用户启用/禁用它.这更简单.

所以,如果是,例如.如果您想提供某人attendance management功能,则必须向该网站的管理员提供启用/禁用它的权限.

为什么?

Wordpress有一个用于添加/更新插件的内置UI.但是在Laravel中,一切都是基于代码的,因此我认为这是最简单的方法(特别是在你的app中可以插件).

脚步

  1. 用UI等建立一个网站......
  2. 创建一个配置和迁移文件,其中包含允许用户启用/禁用的所有插件的名称.
  3. 创建一个同步命令,用于同步应用中的所有插件.
  4. 使用它从前端渲染页面并从后端管理它们的状态(is_active等等...)
  5. 现在,一旦这些插件处于活动状态,请确保用户(比如主持人,编辑者)有权管理它们,为此您显然必须创建角色/权限并使用Laravel策略来处理这些内容.
  6. 最后,只有管理员才会有启用/禁用写入而没有其他人.

对于您希望人们使用过滤器/操作执行其自己的功能的其他部分.我要说这与你说的部分完全矛盾Installing Laravel Packages isn't easy.好吧,如果你真的想要一个开发人员进入这个,为什么不立即要求他们为你的应用程序单独制作一个包?嗯....考虑一下:)

但是,即使这样,如果你想创建这样的功能,创建一个用户可以调用的简单类,并使用它的函数来调用自己的函数......比如 - > SMSPlugin::do_action().但是,再次,更新/删除插件等内容将要求您构建自己的插件存储并要求用户上传到它.那么你将不得不制作一个API来不断检查所有已安装的插件的更新,等等......这是一个非常漫长的过程......而且我认为这也不可行!

希望我回答一切.如果您有任何疑问,请在评论中告诉我:)