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