Zend framework 如何指示zend framework中自定义类的位置

Zend framework 如何指示zend framework中自定义类的位置,zend-framework,bootstrapping,Zend Framework,Bootstrapping,我在ZF 1.10应用程序中有一个包含自定义类的文件夹。该文件夹位于/library中。我怎样才能告诉采埃孚他们在哪里?application.ini和index.php都设置了库的路径,但是ZF找不到文件 谢谢查看,特别是在第4页,他在那里谈到了引导程序。他最新的教程虽然很优秀,但似乎依赖Zend工具来创建应用程序并对此加以掩饰 然而,有一件事让我感到震惊,那就是您提到您试图包含的文件夹是public/library。除非你有意与世界分享你的代码,否则我强烈建议你把它放在别处…除非你有一个与公

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

谢谢

查看,特别是在第4页,他在那里谈到了引导程序。他最新的教程虽然很优秀,但似乎依赖Zend工具来创建应用程序并对此加以掩饰


然而,有一件事让我感到震惊,那就是您提到您试图包含的文件夹是public/library。除非你有意与世界分享你的代码,否则我强烈建议你把它放在别处…除非你有一个与公众不共享的“公共”文件夹(在这种情况下,你可能会考虑重新命名它以避免将来的混乱)。使用Zend Application时,最常见的方法是通过添加以下内容在
Application.ini
中注册命名空间:

autoloaderNamespaces[] = "Example_"
其他解决办法:

  • 使用
    set\u include\u path()
    (特殊解决方案)将目录添加到
    include\u path
  • 遵循PEAR命名约定(因此路径解析是可能的)
Bootstrap.php
中设置自动加载器:

protected function _initAutoloader()
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace("Example"); // or Example_
}
最后,设置模块或,例如


我们经常遇到编写自定义函数或类以及将它们放置在何处的问题

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

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

autoloaderNamespaces.custom = "Custom_"

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

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


现在,我们可以在应用程序中使用这个类作为
$test=new Custom_test()

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

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

然后运行composer update

谢谢你,Cal。对不起,我没有公共目录中的库。这只是一个错误。Rob Allen教程依赖于ZF 1.5。我使用的版本是1.10。虽然它创建了一个引导文件,但引导类是空的。除了自定义类之外,其他一切都可以正常工作。我把ZF库放在另一个地方,让PHP include path指向它。它的主要部分应该设置为_include_path,我想你至少可以把它放在空的bootstrap类中。此外,Rob在其网站上通过1.10更新了教程。“旧”教程似乎已经过时了;)谢谢你,武信,成功了!“$autoloader->registerNamespace(..”编辑它!嗨,问这个问题的帖子很老了,但你还能帮我吗?
Zend(1.12)
我有一个目录
Example
和一个类
Example\u Test
直接在
Example
下。我注册了一个名称空间
Example
,然后当我在
php
代码中访问类
Example\u Test
时,我可以毫无问题地完成它。但是当我查看方法
getClassPath()
内部
Zend_Loader_Autoloader_Resource
它不返回有效路径(由于某些条件),因此这意味着该文件未通过方法
autoload()加载
。那么它实际上是如何加载的呢?对于那些正在研究这个问题的人来说,我认为这种方法比公认的答案更可取。我同意Angl.King.47和Muhammad Yaseen的观点——根据我自己的经验,这是一种包含您自己的类库的更简单、更有效的方法。此外,z中的标准index.phpend将在PHP包含路径中包含库目录。
autoloaderNamespaces[] = "Custom_"
"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},