9

我想在我的项目中使用Zend_Tool (ZF 1.9),但我希望能够自定义新文件的默认输出。例如,所有控制器都应该在输出前附加一个特定的标头,其中包含 phpdoc 标记和许可信息,以避免我不得不将其添加为额外的步骤。

此外,对于这个特定项目(但不是所有其他项目),我需要控制器来扩展默认 Zend 控制器以外的东西,因为我已经为某些特定功能扩展了它。

该文档暗示了执行这些操作的能力,但并没有说得很清楚。

据我所知,我可以设置一个 ~/.zf 目录(在基于 ***nix 的系统上)并在其中包含自定义提供程序。但是,这将是机器范围的,而不是仅限于单个项目范围。此外,虽然这会添加新的提供程序,但它(似乎)不允许我自定义现有提供程序的功能。

这里的任何帮助将不胜感激!

4

2 回答 2

1

基本上雅各布的意思是:你所说的似乎是简单的类扩展。这里有一个关于扩展 Zend Framework 的非常简单的幻灯片介绍:

http://www.slideshare.net/PHPBelgium/extending-zend-framework-presentation

还有很多其他在线资源可用于扩展 Zend Framework。您可以为不同的项目创建单独的源代码树,并且可以将各种项目共有的功能添加到公共文件夹中的抽象类中。这样的事情并不常见,但我发现它适用于这些情况:

class My_Component_HelloProvider extends My_Common_Component_HelloProvider
{
    public function say()
    {
        echo 'Hello from my provider!';
    }

    // public function do() is inherited

}

class My_Common_Component_HelloProvider
    implements Zend_Tool_Framework_Provider_Interface
{
    public function do()
    {
        // do something
    }
}

如果这与您尝试做的不同,请告诉我,但没有理由不能从 ZF 的单个实例构建多个应用程序扩展。

于 2009-08-21T18:13:04.087 回答
0

当您定义特定类时,您自然可以继续覆盖。您可以将它们声明为基于您的类,而不是 ZF 类。

对于特定项目,您可以将类路径修改为 ZF 的自定义版本,或者可能具有自定义覆盖文件夹。使用自定义文件夹,您的更改不是机器范围的,但您的 zend 框架也不是。在基于 ***nix 的系统上,您可以利用符号链接将自己保持在 ZF 的一份副本上。

您是否尝试修改您的源代码以包含许可标头和 PHPdoc?如果是这样,我过去所做的就是有一个简单的构建步骤来添加您需要的信息。每种文件类型都可以有适当的头信息。你可以有很好的标签来告诉系统忽略文件,或者只在控制器上运行。

祝你好运,雅各布

于 2009-08-12T23:14:49.283 回答