Zend_Tool很不错,它会生成一个具有给定名称和项目的项目。给定的路径。
但过了一段时间,我开始开发自己的工具,如助手,插件,验证器等......
我将它们全部放在库中,这是可以的(并建议)。
但是,我必须使用相同的引导程序文件启动我的项目,包括我的插件,帮助程序,转换对象,数据库对象等的初始化。
有些可以在application.ini中完成。
然后,我希望能够编写我自己的通用application.ini,我的引导程序中的一些初始化代码,可能是某个目录等......
你/你怎么做?
答案 0 :(得分:3)
我想一个解决方案是编辑library / 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
随后我发现,使用负责设置开箱即用布局的提供商的清单可在以下网址找到:
库\ Zend的\工具\项目\提供商\ 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命令。
此外,通过提供您自己的xml项目配置文件(默认情况下在库/ Zend / Tool / Project / Provider /中创建),显然可以对创建的内容产生很大影响方法_getDefaultProfile()中的项目。
我现在正在尝试:
我遇到一些CLI无法接受我的提供商的问题。 我会报告进展情况!
答案 1 :(得分:0)
如果需要,您可以扩展zend工具类。但我认为最好在库中使用自己的Bootstrap类,只需将生成的class Boostrap extends Zend_Application_Boostrap_Bootstrap
更改为extends My_Bootstrap
答案 2 :(得分:0)
模块可用于项目级别的代码重用:
http://framework.zend.com/manual/en/zend.controller.modular.html
如果您的新项目功能与现有项目类似,则可以向现有项目添加新模块,并在application.ini文件中打开/关闭特定模块。模块特定的初始化可以包含在它们自己的Bootstraps中。
但这并非完全直截了当......
几个月前,当我尝试时,Zend_Tool在创建模块目录结构时遇到了问题,我不得不手动创建它。此外,您可能需要的某些功能(特定于模块的配置文件,合并的导航定义和/或特定的部署配置)当前没有内置到Zend Framework中,需要编写。
对于我的设置,我为每个部署都有一个application.ini(application-foo.ini,application-bar.ini)。使用.htaccess文件中设置的环境变量(SetEnv APP_DEPLOYMENT foo),通过引导程序(index.php)中的自定义逻辑选择相应的ini文件。模块的通用配置放入特定于模块的配置文件中,通过Zend_Application_Resource_Modules的自定义子类加载。
可以运行部署过程以根据站点排除任何不需要的模块,公共文件和/或库。 Phing,Capistrano或Ant对此很有好处。