6

我在 ZF 1.10 应用程序中有一个包含自定义类的文件夹。该文件夹位于 /library。我怎样才能告诉 ZF 他们在哪里?application.ini 和 index.php 都设置了库的路径,但 ZF 找不到文件。

谢谢

4

4 回答 4

24

我们经常遇到编写自己的自定义函数或类以及放置它们的问题。

因此,要添加自定义类(或自定义库),可以使用 zend 框架的自动加载器命名空间。

在 application.ini 文件中添加以下行

autoloaderNamespaces.custom = "Custom_"

或者

autoloaderNamespaces[] = "Custom_"

所有自定义类都将保存在库目录下。在库目录中创建一个名为“Custom”的文件夹(在 application.ini 中定义)。

类将在文件中声明时以“Custom_”为前缀(例如 Custom_Test)

现在我们可以在我们的应用程序中使用这个类$test = new Custom_Test()

于 2011-01-03T10:11:49.243 回答
8

有许多可能的解决方案。在使用 Zend Application 时,最常见的是application.ini通过添加以下内容来注册命名空间:

autoloaderNamespaces[] = "Example_"

其他解决方案:

  • 将您的目录添加到include_path使用中set_include_path()(临时解决方案)
  • 遵循 PEAR 命名约定(因此路径解析是可能的)

在以下位置设置自动加载器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',
    ),        
));
于 2010-03-22T22:15:22.527 回答
1

查看Rob Allen 的这个较早的 Zend Framework 教程,特别是在第 4 页,他谈到了引导程序。尽管他的新教程非常出色,但似乎依赖 Zend Tool 来创建应用程序并对此进行掩饰。

然而,让我感到震惊的一件事是,您提到您要包含的文件夹是public /library。除非您有意与世界共享您的代码,否则我强烈建议您将其放在其他地方......除非您有一个不同的“公共”文件夹与公众共享(在这种情况下,您可能需要考虑重命名它以免将来混淆)。

于 2010-03-22T20:55:55.647 回答
0

将您的自定义库添加到 composer.json:

"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},

并运行作曲家更新

于 2014-05-06T13:02:11.933 回答