假设在全局命名空间中有一些类。我不想在每个类中使用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);
};
}