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

时间:2011-07-15 09:11:43

标签: php zend-framework zend-framework-modules project-layout

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

  • 模型的实现(基于doctrine2)
  • 模型的RBAC,包括用户,组,角色模型
  • 用于ajax后端接口的基于xml的模板引擎
  • (你说出来)......

基本上,所有事情都要“放在铁轨上”并开始行动。打包这些组件的最佳方法是什么?我看到两种可能性:

作为模块

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

临:

  • 我们可以设置路由并执行代码,这对许多模块都有好处(想象一下:paypal模块需要某种回调网址。如果我们的模块可以单独设置它,那么“项目开发者”没有配置需要)。
  • 我们可以提供开箱即用的实际功能(如用户管理)
  • 我们有一个引导来设置自动加载和学说等。

缺点:

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

在库文件夹

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

临:

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

缺点:

  • 必须明确调用Bootstrap
  • 没有直接路由或行动 - 一切都必须通过具体项目代理

那么,你怎么解决这个问题?你把你的可重复使用的通用东西放在哪里zf?

1 个答案:

答案 0 :(得分:1)

我认为您应该使用两种方法。

在开发“类库”代码时,就像“基础架构”类和其他可重用的东西(如ZF自己的组件,Doctrine 2的组件等),你可以把它们放在一起进入库目录。 (或其自己完全独立的项目)

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

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

另外一个想法是,如果您将架构部件开发为“服务”,您甚至可以将它们作为自己的Web服务端点运行。