次のようなサンプルコードが表示されます
$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
。
Monolog が とはまったく異なるパッケージである場合Foo\Bar
、これが発生することを望まないため、完全修飾名前空間を使用します。
の完全修飾名前空間を使用した場合\Monolog\Logger
、$this->foobar
は のインスタンスになりますMonolog\Logger
。
独自の名前空間で別のパッケージ/名前空間のクラスを使用している場合は、完全修飾名前空間を使用してください。同じ名前空間内でクラスを使用している場合は、修飾された名前空間のみを使用してください。