使用SplClassLoader.php和名称空间

时间:2014-03-18 02:56:37

标签: php namespaces autoload

<?php
    //The basic Code.
    require_once("SplClassLoader.php");
     $loader = new SplClassLoader('test', 'lib');
        $loader->register();

    use test\database\Connector;
    ?>

    <?php
    namespace test\database;
    class Database {

    }
    ?>


    <?php
    namespace test\database\Connector;
    class Connector extends text\database\Database {

    }
    ?>

我的文件结构如下所示

\

-index.php

-splclassloader.php

\测试

\测试\数据库

\测试\数据库\ database.php中

\测试\数据库\ Connector.php

它没有加载连接器类。 我在这里不明白的是什么。

1 个答案:

答案 0 :(得分:1)

如果您尝试自动加载将文件夹映射到命名空间的类(我假设是这种情况),请确保您的命名空间仅包含文件夹名称并省略类名。另一方面,use语句不会省略类名。

使用test\database\Connector的命名空间然后定义类Connector意味着您将使用以下方法实例化对象:

$connecter = new \test\database\Connector\Connector();

我猜你还有一个不需要的额外子名称空间Connector。命名空间test\database\Connector应为test\database