我在 ZF 1.10 应用程序中有一个包含自定义类的文件夹。该文件夹位于 /library。我怎样才能告诉 ZF 他们在哪里?application.ini 和 index.php 都设置了库的路径,但 ZF 找不到文件。
谢谢
我在 ZF 1.10 应用程序中有一个包含自定义类的文件夹。该文件夹位于 /library。我怎样才能告诉 ZF 他们在哪里?application.ini 和 index.php 都设置了库的路径,但 ZF 找不到文件。
谢谢
我们经常遇到编写自己的自定义函数或类以及放置它们的问题。
因此,要添加自定义类(或自定义库),可以使用 zend 框架的自动加载器命名空间。
在 application.ini 文件中添加以下行
autoloaderNamespaces.custom = "Custom_"
或者
autoloaderNamespaces[] = "Custom_"
所有自定义类都将保存在库目录下。在库目录中创建一个名为“Custom”的文件夹(在 application.ini 中定义)。
类将在文件中声明时以“Custom_”为前缀(例如 Custom_Test)
现在我们可以在我们的应用程序中使用这个类$test = new Custom_Test()
。
有许多可能的解决方案。在使用 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_
}
最终,设置模块或资源自动加载器,例如。
$resourceLoader->addResourceTypes(array(
'acl' => array(
'path' => 'acls/',
'namespace' => 'Acl',
),
'example' => array(
'path' => 'examples/',
'namespace' => 'Example',
),
));
查看Rob Allen 的这个较早的 Zend Framework 教程,特别是在第 4 页,他谈到了引导程序。尽管他的新教程非常出色,但似乎依赖 Zend Tool 来创建应用程序并对此进行掩饰。
然而,让我感到震惊的一件事是,您提到您要包含的文件夹是public /library。除非您有意与世界共享您的代码,否则我强烈建议您将其放在其他地方......除非您有一个不同的“公共”文件夹不与公众共享(在这种情况下,您可能需要考虑重命名它以免将来混淆)。
将您的自定义库添加到 composer.json:
"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},
并运行作曲家更新