代码之家  ›  专栏  ›  技术社区  ›  Boris Guéry

如何自定义zend_工具以提供自己的骨架/模板?

  •  5
  • Boris Guéry  · 技术社区  · 15 年前

    zend_工具很好,它生成具有给定名称和给定路径的项目。

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

    我把它们都放在图书馆了,没关系(建议)。

    但是,我必须用相同的引导文件启动我的项目,包括初始化我的插件、帮助程序、翻译对象、数据库对象等。

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

    然后,我希望能够编写自己的通用application.ini、引导程序中的一些初始化代码、或者一些目录等等……

    你做什么/你好?

    3 回复  |  直到 12 年前
        1
  •  3
  •   markus    15 年前

    我想一个解决方案是编辑library/zend/tool/project/context/zf中的文件,这些文件似乎提供了开箱即用的项目的内容/结构。

    但这听起来不是正确的解决方案。此外,我已经在我正在进行的研究中发现,该工具(zf.bat或sh)扫描php inculde路径上的所有目录,查找“manifests”和“providers”,后者反过来为该工具提供功能。

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

    清单

    可以用来捆绑和“加载”尽可能多的供应商。

    提供者

    提供者又是要使用的cli命令的实际容器,其设计类似于“controller/action”设计。通过调用命令,可以从命令提示符调用特定类(Controller)的方法(Action):

    zf <method-name> <class-name>
    

    假设这个类扩展了zend_tool_project_provider_abstract

    随后,我发现让提供者负责设置开箱即用布局的清单位于:

    库\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命令。

    此外,显而易见的是 你可以对创造的东西产生很大的影响。 通过提供您自己的XML项目配置文件,默认情况下,该文件是在library/zend/tool/project/provider/project中使用方法getDefaultProfile()创建的。

    我现在正在尝试的 :

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

    我对cli不接受我的提供者有一些问题。 我会汇报进度的!

        2
  •  0
  •   TomáÅ¡ Fejfar    15 年前

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

        3
  •  0
  •   Chris Martin    15 年前

    模块可以用于项目级的代码重用:

    http://framework.zend.com/manual/en/zend.controller.modular.html

    如果您有一个与现有功能类似的新项目,您可以向现有项目添加新模块,并在Aptudio.IN文件中打开/关闭特定模块。模块特定的初始化可以包含在它们自己的引导中。

    但这并不是完全直截了当的…

    几个月前我尝试时,zend_工具在创建模块目录结构时遇到问题,我不得不手工创建它。另外,您可能需要的一些功能(模块特定的配置文件、合并的导航定义和/或特定的部署配置)目前没有内置到zend框架中,需要编写。

    对于我的设置,每个部署都有一个application.ini(application-foo.ini,application bar.ini)。使用.htaccess文件中设置的环境变量(setenv app_deployment foo),通过引导(index.php)中的自定义逻辑选择适当的ini文件。模块的通用配置放入特定于模块的配置文件中,通过zend_application_resource_modules的自定义子类加载。

    部署过程可以运行,以根据站点排除任何不需要的模块、公共文件和/或库。芬格,卡皮斯特拉诺,或蚂蚁是好的。