【问题标题】:With Zend Framework, what is the difference between Module and Package使用 Zend Framework,Module 和 Package 有什么区别
【发布时间】:2010-02-26 01:11:58
【问题描述】:

我使用 Zend Framework 开发 Web 应用程序。

现在,我有一个庞大的库,其中包含了每个东西,被几个 Web 应用程序使用。我正在考虑重新组织它,使用“模块”的概念。

但我不确定 Module 和 Package 之间的区别。

我的理解是:

  • 模块包含 Web 应用程序的一部分(页面、模型...)
  • 包是库中的一组类

我看对了吗?以及如何知道我的类(模块或库的模型)应该放在哪里?

因为例如,我有一些课程来做翻译。我有“模型”类,来表示一种语言、一种文本及其翻译……而且我有一种“API”类,它只是在这里将字符串翻译成一种语言。我会说我需要一个用于模型类和 Web 界面的模块来编辑翻译,而 API 类会进入库中吗?那正确吗 ?有两种类,一种用于模块,一种用于库,这不是很奇怪。

我想这是一个关于 API、库和应用程序架构的开放式问题。

【问题讨论】:

    标签: php zend-framework module package


    【解决方案1】:

    模块,在 ZF 的意义上,将具体的,通常是独立的,应用程序部分组合在一起:

    模块允许开发人员将一组相关的控制器组合成一个逻辑组织的组。模块目录下的结构类似于应用程序目录下的结构。 […] 模块的目录结构应该模仿推荐项目结构中的 application/ 目录

    另一方面,包是代码库中的一组类,它们在概念上属于一起。例如,ActionHelpers 和 ControllerPlugins 在概念上属于 Zend_Controller 包。所有可用的验证器类都属于包Zend_Validate

    使用 PHPDocumentor 时,您可以将代码注释为属于包。如果您查看 ZF 的 API Docs,您将看到此分组有效。尝试找到Zend_Validate_Alpha 类。

    【讨论】:

      【解决方案2】:

      包是命名空间区域,因此具有相似名称的符号不会相互冲突。例如,符号 &main::first 与符号 &List::Util::first 不同。包是 sysbols 的名称前缀。

      模块是代码文件或字节码树。一个模块可以在磁盘上预编译(.pmc)、未编译(.pm);或作为一个单元预加载到内存中——假设没有自动拆分。

      总而言之:包是关于命名空间的,模块是关于文件的。它们是不同的东西,就像苹果和盒子——直到你开始将一种苹果放入一种盒子的那一天,人们开始认为苹果和盒子是相关的。他们是!但是,一个是水果,另一个是一种容器。

      【讨论】:

      • 这不是 ZF 术语中的 模块
      【解决方案3】:

      在我看来很简单:
      模块就像 smarty(具有目标模板的库)。
      包是 2 个或更多模块,它们相互协作以提供更完整的解决方案。
      再说一次我的简单观点。

      【讨论】:

        猜你喜欢
        • 2021-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-26
        • 1970-01-01
        • 2018-07-05
        • 2017-10-30
        相关资源
        最近更新 更多