Zend framework ZF包含路径

Zend framework ZF包含路径,zend-framework,require-once,Zend Framework,Require Once,要求一次是正确的吗? 您将把它放在何处以及如何放置 它不应该在application.ini或bootstrap中吗 例如: require_once 'Zend/View/Helper/Abstract.php'; // @question - is this correct - where and // how would you put it include path class Zend_View_Helper_Translate extends Zend_View_Helper_Ab

要求一次是正确的吗? 您将把它放在何处以及如何放置

它不应该在application.ini或bootstrap中吗

例如:

require_once 'Zend/View/Helper/Abstract.php';
// @question - is this correct - where and
// how would you put it include path

class Zend_View_Helper_Translate extends Zend_View_Helper_Abstract
{
}

在这种情况下是不正确的

首先,请使用Zend工具。它将创建您不知道如何自己创建的文件。它将创建正确的类名,适当地扩展它们,并且
require\u一次
任何可能需要的东西

不要将
require_一次
放入引导程序中。您希望它只在需要时执行,而不是在每个请求中执行

对于您提供的示例,正确的版本为:

require_once "Zend/View/Interface.php";
class Zend_View_Helper_Foo extends Zend_View_Helper_Abstract {
}

助手扩展的类是自动加载的,并且将其放入
require\u once
中不会执行任何操作。

一般来说,通过适当使用
Zend\u Loader\u Autoloader
可以几乎完全避免
require\u once
调用。当然,关键是“适当”

通常,您的
public/index.php
会将
include\u路径
设置为
文件夹。然后,如果您使用的是
Zend_应用程序
,则注册
Zend_加载器(U Autoloader)
,以查找其名称空间前缀已使用
Application/configs/Application.ini中的
Autoloader名称空间
数组注册的任何名称空间

棘手的部分是在文件中定义的类,这些文件不“驻留在include_路径上”,例如出现在
应用程序/模型中的模型、驻留在
应用程序/服务中的服务等。尽管在这些文件中定义的类往往遵循PSR-0标准,PSR-0映射是相对于包含路径的基off发生的,这意味着系统必须知道类名前缀和基路径之间的映射。这就是我进来的地方。这些资源自动加载程序通常在应用程序引导扩展
Zend\u application\u Bootstrap\u Bootstrap
和模块引导扩展
Zend\u application\u module\u Bootstrap
中自动设置

视图帮助程序是驻留在“include_路径之外”的类的另一个示例,可能位于
application/views/helpers
中。由于这些通常在视图脚本中使用短格式
$this->someHelper($someParam)
调用,因此必须告诉系统如何从这个短名称生成完全限定的类名。这是通过使用将名称空间前缀映射到文件系统位置的
$view->addPrefixPath()
实现的。同样,应用程序级和模块级引导机制为您设置了其中的大部分

对于不遵循PSR-0标准的库/类,您可以创建它们并将它们(通常在引导时)附加到
Zend_Loader\u Autoloader
singleton。这是唯一一个明确包含/要求的地方


tl;dr:只要正确使用现有的ZF自动加载器机制,您几乎不需要在自己的应用程序代码中使用
include/require
语句。

@Wil总结一下这个伟大的答案,丢失include语句并将帮助程序放入目录
application/views/helpers
modules/module/views/helpers
,它将正常工作。在您的视图中,使用
$this->Translate($someParam)
调用帮助程序。。。好运气这是最全面、最简洁的答案。没想到这么多,谢谢!我已经掌握了窍门,但是很难找到这么好的信息。我很高兴,很高兴能帮上忙。感谢RockyFord为我典型的过度扩张的漫步画下了底线我想问你的问题。。。视图助手是您真正需要的解决方案吗?也许一个插件会更合适?对投票人来说:有什么评论可以解释为什么你认为我的答案没有用吗?谢谢,请看上面的答案。终于到了。