Zend framework ZF包含路径
要求一次是正确的吗? 您将把它放在何处以及如何放置 它不应该在application.ini或bootstrap中吗 例如: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
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为我典型的过度扩张的漫步画下了底线我想问你的问题。。。视图助手是您真正需要的解决方案吗?也许一个插件会更合适?对投票人来说:有什么评论可以解释为什么你认为我的答案没有用吗?谢谢,请看上面的答案。终于到了。