3

次のようなサンプルコードが表示されます

$log = new Monolog\Logger('name');

代わりに完全修飾クラス名を常に使用しないのはなぜですか?

$log = new \Monolog\Logger('name');

したがって、このファイルがどの名前空間で使用されていても心配する必要はありませんよね?

4

1 に答える 1

2

別の名前空間からクラスを参照する場合は、完全修飾名前空間を使用します。例えば:

<?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

独自の名前空間で別のパッケージ/名前空間のクラスを使用している場合は、完全修飾名前空間を使用してください。同じ名前空間内でクラスを使用している場合は、修飾された名前空間のみを使用してください。

于 2014-08-16T05:30:25.820 に答える