如何在Zend Framework中使用我的个人课程

时间:2011-07-31 16:22:51

标签: php zend-framework class import

我在 library / AclManager.php 中有AclManager类,而这个代码在 public / index.php

set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

require_once 'Zend/Application.php';

Zend_Loader::loadClass("AclManager");

但服务器抛出内部错误(500)。为什么呢?

3 个答案:

答案 0 :(得分:3)

建立在manyxcxi的answer之上 - 以下是我如何管理这个:

  • 首先,给你的AclManager一个“命名空间”。您可以通过将课程重命名为{Namespace}_AclManager并将其移至library/{Namespace}/AclManager.php来完成此操作。

  • 现在就像使用Autoloader注册名称空间一样简单,你可以这样做,因为很多xcxi指出 OR 你只需将它添加到你的application.(ini|xml|etc)

以下是application.xml示例:

<autoloaderNamespaces>
    <{Namespace}>{Namespace}_</{Namespace}>
</autoloaderNamespaces>

...这里是application.ini中的等同物:

autoloaderNamespaces[] = "{Namespace}_"

显然,您需要使用自己的自定义命名空间替换上面所有内容中的{Namespace},例如AppAegidius

答案 1 :(得分:-1)

所有关于设置引导程序以使其正确自动加载。 这应该是bootstrap.php文件的第一个函数:

// resources are bootstrapped in order, so be sure dependencies for
    // resources are listed first. you can explicitly bootstrap a resource by
    // calling $this->bootstrap('resource').

    protected function _initAutoload()
    {
        $autoloader = Zend_Loader_Autoloader::getInstance();
        // enable classic PEAR-like class autoloading
        $autoloader->setFallbackAutoloader(true);
        $autoloader->registerNamespace('Ashurex_');


    }

将Ashurex替换为您的命名空间,但请确保保留尾随_。 设置后备自动加载器将允许ZF以更“松散”的模式拾取类。您不必定义一堆名称空间等。有时您可能不希望此设置为true,但只是为了让它变得有帮助。

- 编辑 -

定义命名空间后,您需要将类放在项目/库/命名空间文件夹中。例如,如果我有一个名为Ashurex_Testing_MyClass的类,我会将它存储在project / library / Ashurex / Testing / MyClass.php中。重要的是要认识到类名中的_就像Java中的点一样。它们本质上是目录/文件路径。

答案 2 :(得分:-3)

删除逗号:

 get_include_path(),

更新:显然这无法解决问题; - )