PHP Root命名空间

时间:2012-03-21 20:27:03

标签: php namespaces

我有一个文件,我需要在多个名称空间中指定类,如:

<?php

namespace library;

class ClassInLib {
   ...
}

namespace \; //Switch to root namespace

class ClassInRoot {
   ...
}

上述代码在namespace \;处有语法错误。如何从library命名空间切换到根命名空间?

为什么我需要这个:我需要在单元测试期间模拟一堆类,我不认为这些非常短的模拟类可以证明是在单独的文件中。

2 个答案:

答案 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