我在 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)。为什么呢?
答案 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}
,例如App
或Aegidius
。
答案 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(),
更新:显然这无法解决问题; - )