首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何定制Zend_Tool来提供我自己的框架/模板?

我如何定制Zend_Tool来提供我自己的框架/模板?
EN

Stack Overflow用户
提问于 2009-09-03 14:41:03
回答 3查看 1.1K关注 0票数 5

Zend_Tool很好用,它生成一个具有给定名称和给定路径的项目。

但过了一段时间,我开始开发自己的工具,比如帮助器、插件、验证器等。

我把它们都放到了库中,这是可以的(并被推荐)。

但是,我必须使用相同的bootstrap文件开始我的项目,包括初始化我的插件、助手、翻译对象、数据库对象等。

有些可以在application.ini中完成。

然后,我希望能够编写自己的通用application.ini,在我的引导程序中编写一些初始化代码,也许是一些目录,等等。

你是怎么做的?

EN

回答 3

Stack Overflow用户

发布于 2009-09-26 22:39:32

我猜一种解决方案是编辑库/zend/Tool/ project /Context/Zf中的文件,这些文件似乎提供了用于开箱即用项目的内容/结构。

但这听起来不像是正确的解决方案。此外,在我正在进行的研究中,我已经发现该工具(zf.bat或sh)会扫描php inculde_path上的所有目录中的‘清单’和‘提供者’,这反过来又为该工具提供了功能。

其中一位Zend开发人员的文章Zend_Tool for the Developer刚刚澄清了一些事情。

清单

可以用来捆绑和“加载”你想要的任意数量的提供者。

提供者

反过来,提供者是您想要使用的CLI命令的实际容器,其设计类似于“控制器/动作”设计。通过调用以下命令,可以从命令提示符调用特定类(控制器)的方法(操作):

代码语言:javascript
运行
复制
zf <method-name> <class-name>

假设这个类扩展了Zend_Tool_Project_Provider_Abstract

随后,我发现获取负责设置开箱即用布局的提供者的Manifest位于:

library\Zend\Tool\Project\Provider\Manifest.php

在此文件中,将向工具返回以下提供程序:

代码语言:javascript
运行
复制
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中。

我现在正在尝试什么

  • 使用我自己的内容和在我自己的项目提供程序中覆盖默认提供程序和默认清单,覆盖_getDefaultProfile()并将某些内容设置为true而不是false。

我遇到了一些CLI不接受我的提供程序的问题。我会汇报进度的!

票数 3
EN

Stack Overflow用户

发布于 2009-09-03 15:17:05

如果需要,您可以扩展zend工具类。但我认为最好在库中有自己的Bootstrap类,只需将生成的class Boostrap extends Zend_Application_Boostrap_Bootstrap更改为extends My_Bootstrap

票数 0
EN

Stack Overflow用户

发布于 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就是很好的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1373831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档