1

我是命名空间的新手,我猜想在 SplClassLoader 的方法中自动加载。我试过搜索很多教程,但运气不佳。也许你们可以帮我搞定这件事?

目录结构

- Oram
    - Lib
        - Classes
            Test.php
- index.php
- SplClassLoader.php

测试.php

<?php
namespace Oram\Lib\Classes;

class Test
{
    function __construct()
    {
        echo "Test Class loaded";
    }
}

索引.php

<?php
require_once('SplClassLoader.php');

$loader = new SplClassLoader('Lib', 'Oram\Lib'); 
$loader->register();

use Oram\Lib\Classes\Test;
$test = new Test();

当我在 WAMP 上运行它时,这一切都在 localhost/website/ 内。

Fatal error: Class 'Oram\Lib\Classes\Test' not found in C:\Program Files\wamp\www\website\index.php on line 10

任何建议,或者如果有人可以向我指出一些阅读资源来让我明白这一点,那就太好了。

谢谢

4

1 回答 1

1

编辑: 我有!我认为您必须将反斜杠 (\) 更改为斜杠 (/)。

<?php
    require_once('SplClassLoader.php');

    $loader = new SplClassLoader('Lib', 'Oram/Lib'); 
    $loader->register();

    use Oram\Lib\Classes\Test;
    $test = new Test();
?>
Take a look on [this][1]. 

试试看。我在您的命名空间之前添加了一个 \。这可能是答案:

$loader = new SplClassLoader('Lib', '\Oram\Lib'); 
于 2013-06-23T16:07:23.637 回答