打包通用zend模块的最佳方式


Best way to package a general-purpose zend module

当我们公司开始使用Zend Framework作为我们大多数项目的基础框架时,我们希望在我们所有的项目中共享一些共同的元素。我说的是:

  • 一个模型的实现(基于doctrine2)
  • 模型的RBAC,包括用户、组、角色模型
  • 基于xml的ajax后端接口模板引擎

基本上,所有的事情都让"zend on rails"并开始行动。打包这些组件的最佳方式是什么?我看到两种可能:

作为模块

我们将必要的功能作为单独的模块包含到modules文件夹中。

职业:

  • 我们可以设置路由和执行代码,这是很好的许多模块(想象的例子:一个paypal模块需要某种回调url。如果我们的模块可以自己设置,则不需要"项目开发人员"的配置)。
  • 我们可以提供真正的功能(如用户管理)开箱即用
  • 我们有一个bootstrap来设置自动加载和学说等。

反对:

  • 不好的地方吗?干扰用户项目
  • 更难在项目之间共享(git子模块而不是类路径)

在库文件夹

我们把它放在库文件夹中,并指向它的类路径。

职业:

  • 清洁解决方案
  • 跨项目共享

反对:

  • Bootstrap必须显式地调用
  • 没有直接路由或操作-所有东西都必须通过具体项目代理

那么,如何解决这个问题呢?你把可重复使用的,通用的东西放在zf的什么地方?

我认为你应该同时使用两种方法。

当开发"类库"代码时,如"基础设施"类和其他可重用的东西(如ZF自己的组件,Doctrine 2的组件等),您可以将它们放入库目录中。(或它自己完全独立的项目)

在开发实际的ZF模块(例如,像验证模块)时,然后围绕ZF模块结构格式化代码。

我认为通过使用这种方法,您可以获得您列出的所有优点,而几乎没有缺点:)

作为一个额外的想法,如果您将架构部分开发为"服务",您甚至可以让它们作为自己的web服务端点运行。