我看到一些示例代码,如
$log = new Monolog'Logger('name');
为什么不总是使用完全限定的类名呢?
$log = new 'Monolog'Logger('name');
所以您不需要担心这个文件是否在任何名称空间中使用,对吗?
如果从单独的名称空间引用类,则使用完全限定的名称空间。例如:
<?php
namespace Foo'Bar;
class ClassName
{
function __construct()
{
$this->foobar = new Monolog'Logger;
}
}
在这种情况下,$this->foobar
将被解析为Foo'Bar'Monolog'Logger
的实例。
如果独白与Foo'Bar
是一个完全不同的包,我们不希望发生这种情况,所以我们使用完全限定的命名空间。
如果使用'Monolog'Logger
的完全限定名称空间,则$this->foobar
将是Monolog'Logger
的实例。
如果您在自己的命名空间中使用来自单独包/命名空间的类,则使用完全限定的命名空间。如果在同一个命名空间中使用类,则只使用限定的命名空间。