Zend_Tool很好用,它生成一个具有给定名称和给定路径的项目。
但过了一段时间,我开始开发自己的工具,比如帮助器、插件、验证器等。
我把它们都放到了库中,这是可以的(并被推荐)。
但是,我必须使用相同的bootstrap文件开始我的项目,包括初始化我的插件、助手、翻译对象、数据库对象等。
有些可以在application.ini中完成。
然后,我希望能够编写自己的通用application.ini,在我的引导程序中编写一些初始化代码,也许是一些目录,等等。
你是怎么做的?
发布于 2009-09-26 22:39:32
我猜一种解决方案是编辑库/zend/Tool/ project /Context/Zf中的文件,这些文件似乎提供了用于开箱即用项目的内容/结构。
但这听起来不像是正确的解决方案。此外,在我正在进行的研究中,我已经发现该工具(zf.bat或sh)会扫描php inculde_path上的所有目录中的‘清单’和‘提供者’,这反过来又为该工具提供了功能。
其中一位Zend开发人员的文章Zend_Tool for the Developer刚刚澄清了一些事情。
清单
可以用来捆绑和“加载”你想要的任意数量的提供者。
提供者
反过来,提供者是您想要使用的CLI命令的实际容器,其设计类似于“控制器/动作”设计。通过调用以下命令,可以从命令提示符调用特定类(控制器)的方法(操作):
zf <method-name> <class-name>
假设这个类扩展了Zend_Tool_Project_Provider_Abstract
随后,我发现获取负责设置开箱即用布局的提供者的Manifest位于:
library\Zend\Tool\Project\Provider\Manifest.php
在此文件中,将向工具返回以下提供程序:
public function getProviders()
{
return array(
new Zend_Tool_Project_Provider_Profile(),
new Zend_Tool_Project_Provider_Project(),
new Zend_Tool_Project_Provider_Controller(),
new Zend_Tool_Project_Provider_Action(),
new Zend_Tool_Project_Provider_View(),
new Zend_Tool_Project_Provider_Module(),
new Zend_Tool_Project_Provider_ProjectProvider()
);
}
这些显然是可用的默认CLI命令。
此外,很明显,通过提供您自己的项目配置文件,您可以对创建的内容产生很大影响,默认情况下,该配置文件创建在_getDefaultProfile()方法中的库/Zend/Tool/ project /Provider/Project中。
我现在正在尝试什么
我遇到了一些CLI不接受我的提供程序的问题。我会汇报进度的!
发布于 2009-09-03 15:17:05
如果需要,您可以扩展zend工具类。但我认为最好在库中有自己的Bootstrap类,只需将生成的class Boostrap extends Zend_Application_Boostrap_Bootstrap
更改为extends My_Bootstrap
发布于 2009-09-04 03:48:06
模块可用于项目级别的代码重用:
http://framework.zend.com/manual/en/zend.controller.modular.html
如果您有一个在功能上与现有项目相似的新项目,则可以向现有项目添加新模块,并在application.ini文件中打开/关闭特定模块。特定于模块的初始化可以包含在它们自己的引导程序中。
但这并不是完全直接的.
几个月前,当我尝试创建模块目录结构时,Zend_Tool遇到了问题,我不得不手动创建它。此外,您可能需要的一些特性(特定于模块的配置文件、合并的导航定义和/或特定的部署配置)目前还没有构建到Zend Framework中,需要编写。
在我的设置中,每个部署( application.ini -foo.ini和application-bar.ini)都有一个应用程序。使用在.htaccess文件中设置的环境变量(SetEnv APP_DEPLOYMENT foo),通过引导程序(index.php)中的自定义逻辑选择适当的ini文件。模块的通用配置被放入特定于模块的配置文件中,这些配置文件通过Zend_Application_Resource_Modules的自定义子类加载。
根据站点的不同,可以运行部署过程来排除任何不需要的模块、公共文件和/或库。Phing、Capistrano或Ant就是很好的选择。
https://stackoverflow.com/questions/1373831
复制相似问题