我想弄清楚如何为我的zend框架应用程序实现类似插件架构的东西。
假设我有一些文件的上传公式。如果没有“插件”,我想将一些默认上传到我的网络服务器。但是,如果我插入“specific-upload-plugin”,我希望将文件上传到sharepoint(仅作为示例)。
但我真的希望在不改变任何代码的情况下实现这一目标。我可以改变一些配置文件,但我根本不需要更改任何控制器代码。
有人能指出一些关于我将如何实现这一目标的教程或方法吗?或者只是关于这类任务的一些最佳实践?
提前谢谢
答案 0 :(得分:1)
我的第一个想法是扩展Zend_File_Transfer_Adapter_Http
,它是用于处理Zend Framework中标准File
上传元素的适配器。
您可能需要做的就是重载receive()
方法以接收文件,但不是将文件移动到服务器上的永久位置,而是可以将适配器上传到sharepoint,或者处理移动文件到达最终目的地的任何地方。
您的构造函数可以设置适配器特定选项,例如sharepoint IP地址和凭据以及您需要的任何其他选项。
这样,不需要对控制器进行任何更改,只需修改Zend_Form
对象以使用File
元素,但为其提供自定义传输适配器。所有验证和错误处理都由Zend_Form完成,您的适配器负责处理将文件放在需要的位置的详细信息,并且可以将遇到的任何错误传递回表单。因此,无需更改任何控制器代码;所有逻辑都存在于您的传输适配器和表单中。
希望这有助于指明你正确的方向。