Zend framework Zend框架-动态添加;代码模块“;或班级

Zend framework Zend框架-动态添加;代码模块“;或班级,zend-framework,architecture,Zend Framework,Architecture,我正在构建一个基于Zend的Web应用程序,它将允许第三方扩展 本质上,这个应用程序的数据库将有一个通用的“内容存储”。添加扩展以以以不同的方式呈现不同的内容 想象一个富邮件存储:当用户请求一个“日历”项目时,我实例化一个日历类(或其他)并要求它呈现该项目的内容。同一个数据库可能包含“邮件”项,它们由不同的类(或其他任何类)呈现。所以我基本上是用处理内容项所需的方法定义一个基类,然后编写从该基类继承来处理特定项类型的外接程序 每个外接程序都可能需要访问自己的视图文件,因为它们显然具有不同的视觉布

我正在构建一个基于Zend的Web应用程序,它将允许第三方扩展

本质上,这个应用程序的数据库将有一个通用的“内容存储”。添加扩展以以以不同的方式呈现不同的内容

想象一个富邮件存储:当用户请求一个“日历”项目时,我实例化一个日历类(或其他)并要求它呈现该项目的内容。同一个数据库可能包含“邮件”项,它们由不同的类(或其他任何类)呈现。所以我基本上是用处理内容项所需的方法定义一个基类,然后编写从该基类继承来处理特定项类型的外接程序

每个外接程序都可能需要访问自己的视图文件,因为它们显然具有不同的视觉布局

我无法预见所有可能使用的内容呈现器;新的将被“安装”(以某种方式),以便我的应用程序知道“当我看到数据库类型列为XYZ的内容时,我将调用XYZ东西来呈现它。”

很可能会发生这样的情况:用户将访问应用程序的URL,从而触发控制器内的操作。该控制器将使用一个模型方法,告诉它请求了哪个特定的内容项

从那里,模型或控制器(哪个?)需要调用从数据库中获取项目的东西(什么?)(好的,模型显然是这样做的)并使用一些预先确定的视图进行渲染。这将是一个较大页面的一部分,该页面可能包含多个呈现项(如内容项列表)

所以有两个问题:

  • 在Zend框架中构建此框架的最佳方法是什么?我确实希望这些外接程序从我提供的基本渲染器类继承,因为非常简单的渲染器可能只需要从该基类调用功能,而不是拥有自己的任何代码(例如,“注释”和“备注”可能会使用基本渲染器类的简化渲染功能)

  • 在我的应用程序中“注册”这些外接程序的最佳方式是什么?一个.ini文件,也许是一个数据库表?目标是简化操作应用程序的人员的安装步骤,例如,编辑.ini文件通常比手动查询数据库容易,不过我也可以为要注册的新内容呈现器提供管理后端UI

我将为此实现

每个第三方扩展都应该实现一个您定义的接口,这样您就知道可以对作为该接口实例的任何对象调用特定方法,例如
render()

然后,每个扩展都实现自己的呈现。也许它利用了Zend框架架构中的。或者,它可能使用一些完全不同的代码将自身呈现为PDF或其他格式(可能每个扩展都需要能够覆盖内容类型标题?)

至于如何注册它,请查看Zend_应用程序框架以进行定义