假设我在全局命名空间中有一些类。我不想在每个类中使用namespace关键字,但我有一个自动加载机制。我可以动态设置类的命名空间吗?所以
\src\HTML\Form\Form.php
// namespace HTML\Form
class Form
{
}
\src\Setting\Db.php
// namespace Setting
class Db
{
}
答案 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);
};
}
不允许。