我有一个文件,我需要在多个名称空间中指定类,如:
<?php
namespace library;
class ClassInLib {
...
}
namespace \; //Switch to root namespace
class ClassInRoot {
...
}
上述代码在namespace \;
处有语法错误。如何从library
命名空间切换到根命名空间?
为什么我需要这个:我需要在单元测试期间模拟一堆类,我不认为这些非常短的模拟类可以证明是在单独的文件中。
答案 0 :(得分:4)
namespace
{
class RootClass
{
function whatever();
}
}
namespace Symfony\Component\DependencyInjection
{
interface ContainerAwareInterface
{
function setContainer(ContainerInterface $container = null);
}
}
http://www.php.net/manual/en/language.namespaces.definitionmultiple.php
你很有可能决定使用单独的文件。
答案 1 :(得分:0)
我为此苦了一段时间-我将想要全局命名的类文件(例如,我想将它们用作\myClass
)放入其自己的文件夹中,并删除了所有声明的namespace ... ;
在文件中。
然后在composer.json
中将classmap添加到我创建的目录中:
"autoload": {
"classmap": [
"directoryWith/subDirIfNeeded"
]
...
}
那么当您对composer dumpautoload
进行更改时,别忘了composer.json