Php,有没有办法将类加载到命名空间?

时间:2015-05-27 13:50:41

标签: php namespaces

假设我在全局命名空间中有一些类。我不想在每个类中使用namespace关键字,但我有一个自动加载机制。我可以动态设置类的命名空间吗?所以

\src\HTML\Form\Form.php

// namespace HTML\Form

class Form
{
}

\src\Setting\Db.php

// namespace Setting

class Db
{
}

1 个答案:

答案 0 :(得分:2)

  

我不想在每个类

中使用namespace关键字

如果您不想使用命名空间,请不要使用它。如果您的问题只是使用自动加载器,那么您只需使用其目录路径映射每个类。

$srcDir = __DIR__. '/src';
$formDir = $srcDir . '/HTML/Form';
$classesMap = array(
    'Db'   => $srcDir . '/Setting/Db.php',
    'Form' => $formDir . '/Form.php',
); 

如果您遵循PSR-0/4或(旧)PEAR编码标准等标准,则无需进行此项工作。

如果您正在使用作曲家,请查看classmap

  

有没有办法将类加载到命名空间?

这样的东西
function autoload($class) {
    namespace DynamicNamespace {
        require ('/path/to/classes/'. $class);
    };
}

允许。