Php中,是否有一种方法可以将类加载到命名空间中


Php, is there a way to load a class into a namespace?

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

'src'HTML'Form'Form.php
// namespace HTML'Form
class Form
{
}
'src'Setting'Db.php
// namespace Setting
class Db
{
}

我不想在每个类中使用命名空间关键字

如果你不想使用namespace,那就不要使用它。如果您的问题只是使用自动加载器,那么您可以简单地将每个类与其目录路径进行映射。

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

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

如果你正在使用composer,请查看classmap.

是否有方法将类加载到命名空间中?

之类的
function autoload($class) {
    namespace DynamicNamespace {
        require ('/path/to/classes/'. $class);
    };
}