【发布时间】:2013-01-13 12:56:53
【问题描述】:
首先,我正在尝试使用以下 SplClassLoader -https://gist.github.com/221634
这是我的文件结构:
/root/f1/f2/APS/Common/Group.php
/root/f1/f2/index.php
/root/f1/f2/SplClassLoader.php
这是我的名为 Group (Group.php) 的测试类
namespace APS\Common;
class Group{
...
}
这里是调用一切的 index.php 文件:
require "SplClassLoader.php";
$classLoader = new SplClassLoader('APS', 'APS/Common');
$classLoader->register();
我收到以下错误:
Fatal error: Class 'Group' not found in /root/f1/f2/index.php on line 17
在将命名空间和路径传递给加载程序时,我已经尝试了所有可能的组合。它永远不会起作用。
更新 #1 - index.php 中的第 17 行:
16: use APS\Common;
17: $x = new Group();
更新 #2 - 配置信息
- Apache/2.2.15(红帽)
- PHP 5.3.3
更新 #3 - 我现在收到一条不同的错误消息。
代码到位:
require "SplClassLoader.php";
$classLoader = new SplClassLoader('APS', '/root/f1/f2');
$classLoader->register();
use APS\Common;
$x = new Common\Group();
我收到的错误消息:
Warning: require(/f1/f2/APS/Common/Group.php): failed to open stream: No such file or directory in /root/f1/f2/SplClassLoader.php on line 133
【问题讨论】:
-
能否看到 index.php 的第 17 行?您是否在 index.php 中使用了任何“使用”语句?
-
@DavidHamp 查看我原来问题的更新。我的调用正上方有一个 use 语句来实例化我的类。
-
您是否尝试过在您的 SplClassLoader 实例化中指定更明确的包含路径? ('/root/f1/f2/APS/Common')
-
@DavidHamp 不,我没有......所以它看起来像这个新的 SplClassLoader('APS\Common', '/f1/f2/APS/Common') ?
标签: php autoloader spl-autoloader