我看到一些示例代码,比如:
$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
实例。
use ...
和... extends ...
语句怎么样?名称解析规则 页面中的示例不包括这两种情况。人们可以推断,但它们并不明确。 - akinuri