ZF2框架第三方模块的实现和限制

时间:2014-11-10 14:12:52

标签: php module zend-framework2

我们正在完全基于ZF2构建应用程序。该应用程序分为3个主要部门,即Core,API和Front End部分/部门。

在某些时候,我们希望打开系统,让人们开发第三方模块,这些模块将提供给客户拥有的不同配置文件。这些第三方模块可以扩展功能,也可以通过挂钩从核心级别触发的事件来增强现有流程。

这些第三方模块可以使用API​​,但是,当前的API是外向的,并不适合从这个角度增强和扩展系统。

因此,替代方案是允许直接访问Core,我们认为这可能并不理想,因为我们必须有一种方法来控制对这些重要组件和底层数据的访问。

我正在考虑构建一个单独的API,旨在尝试从应用程序生命周期中的模块级别管理访问,但是,我不完全确定这样的事情是什么样的。

文件夹结构如下所示:

-config

-data

-AppCore

- 核心

- CoreForms

- CoreContacts

-AppAPI

- APIForms

- APIContacts

-APPFront(此fodler将进入ZF2安装的单独实例并通过APPApi进行通信)

- FrontForms

- FrontContacts

-3rdPartyModules

-public

-vendor

开发的模块将驻留在整个结构中的3rdPartyModules文件夹中。

问题是,如何限制对Core资源的访问,例如,任何第三方模块都不能使用标准数据库适配器。在这种情况下,db_adapter(Zend \ Db \ Adapter \ Adapter)。

这些模块将有一个单独的数据库设置,其中应该存储特定于这些模块的数据,因此可以使用db_adapter_3rdparty这样的内容。

我已经考虑过在这些第三方模块中使用接口,然后对任何核心模块类和函数进行检查,但这样做会很麻烦且效率低下。

目前,API功能只能通过REST访问,因此不会选择挂钩系统,因为密钥会涉及并成为管理员的噩梦。

那么问题是,允许在整个应用程序中安装模块,您是否能够限制对应用程序资源的访问,如果是这样,那么实现此类控制的最有效方法是什么,以及它是否是一个好的允许这种情况发生的想法?

除了实际安装模块,配置模块等之外,我已经做了很多搜索,找不到任何需要的东西。

非常感谢提前!

0 个答案:

没有答案