4

我正在尝试加载一个类,以便我在类文档的帮助下编写的 PHP 脚本能够工作。

由于我的服务器运行的是 PHP 5.3,文档建议像这样加载类:

spl_autoload_register(function($class){
    if (file_exists('/webgit/webroot/home/myUsername/www/elastica/lib/' . $class . '.php')) {
       echo " found \n ";
       require_once('/webgit/webroot/home/myUsername/www/elastica/lib/' . $class . '.php');
    }
    else {
       echo " not found! ";
    }
});

唯一不同的是我在 if 和 else 套件中包含了 echo。另外 myUsername 实际上是我在服务器文件系统路径中的用户名。

然后,它(文档)建议我像这样创建一个类的新实例:

$elasticaClient = new \Elastica\Client();

但是,我收到一个错误,即找不到该类。这正是打印的内容,包括错误和我的 if-else 套件:

未找到!致命错误:在第 17 行的 /webgit/webroot/home/myUsername/www/elastica/index.php 中找不到类“Elastica\Client”

第 17 行是我尝试创建类实例的行。

现在,index.php 是上述代码所在的位置,它位于我的服务器上的 /webgit/webroot/home/myUsername/www/elastica/

并且所有的类文件都在 /webgit/webroot/home/myUsername/www/elastica/lib/

所以,我不明白为什么它无法找到/加载类。

我将不胜感激任何帮助解决这个问题!

4

2 回答 2

1

not found!- 这意味着找不到文件。文件,而不是类。

变量 $class 包含带有命名空间的完整类名Elastica\Client。你确定你有/webgit/webroot/home/myUsername/www/elastica/lib/Elastica\Client.php文件吗?

检查如何将 PHP 命名空间与自动加载一起使用?并了解PSR-0

于 2013-03-15T01:15:31.353 回答
0

因错误过多而删减。然而,迈克在评论中有一个链接值得保留。

于 2013-03-14T23:50:25.563 回答