我在ZF 1.10应用程序中有一个包含自定义类的文件夹。该文件夹位于/ library中。我如何告诉ZF他们在哪里? application.ini和index.php都设置了库的路径,但ZF无法找到文件。
谢谢
答案 0 :(得分:24)
我们经常遇到编写自己的自定义函数或类以及放置它们的位置的问题。
因此,要添加自定义类(或自定义库),可以使用zend framework的自动加载器命名空间。
在application.ini文件中添加以下行
autoloaderNamespaces.custom = "Custom_"
OR
autoloaderNamespaces[] = "Custom_"
所有自定义类都将保存在库目录下。在库目录中创建文件夹名称“Custom”(在application.ini中定义)。
在文件中的声明(例如Custom_Test)中,类将以'Custom_'为前缀
现在我们可以在我们的应用程序中将此类用作$test = new Custom_Test()
。
答案 1 :(得分:8)
有许多可能的解决方案。在使用Zend Application时,最常见的是通过添加:
在application.ini
中注册命名空间
autoloaderNamespaces[] = "Example_"
其他解决方案:
include_path
(即席解决方案)set_include_path()
在Bootstrap.php
中设置自动加载器:
protected function _initAutoloader()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace("Example"); // or Example_
}
最后,设置模块或resource autoloader,例如
$resourceLoader->addResourceTypes(array(
'acl' => array(
'path' => 'acls/',
'namespace' => 'Acl',
),
'example' => array(
'path' => 'examples/',
'namespace' => 'Example',
),
));
答案 2 :(得分:1)
查看this older Zend Framework tutorial from Rob Allen,特别是第4页,他谈到了bootstrapper。他的新教程虽然非常出色,但似乎依赖于Zend Tool来创建应用程序并对其进行掩盖。
然而,令我感到震惊的一件事是,您提到您尝试包含的文件夹是 public / library。除非您有意与世界分享您的代码,否则我强烈建议您将其放在其他地方......除非您有一个与公众共享的不同“公共”文件夹 (在这种情况下)您可能需要考虑重命名以避免将来混淆。)
答案 3 :(得分:0)
将您的自定义库添加到composer.json:
"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},
并运行composer update