我正在尝试加载一个类,以便我在类文档的帮助下编写的 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/

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

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

最佳答案

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

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

检查 How do I use PHP namespaces with autoload? 并了解 PSR-0

10-08 13:06