24
23

More than 5 years have passed since last update.

classからのuseとnamespaceからのuseの違い

Last updated at Posted at 2016-11-12

class から trait を use する場合

  • 現在属している名前空間が基点になる
  • 定義の時点でトレイトが見つからない場合はエラーになる
絶対指定
<?php

namespace mpyw;

class App
{
    use \mpyw\AwesomeLogger\LoggerTrait;
}
相対指定
<?php

namespace mpyw;

class App
{
    use AwesomeLogger\LoggerTrait;
}

namespace から何かを use する場合

  • 常にルート名前空間が基点になる
  • 実際に対象が使用されるまでエラーは検査されない
絶対指定
<?php

namespace mpyw;

use \mpyw\AwesomeLogger\Logger;
use \mpyw\AwesomeLogger\LoggerInterface;
use \mpyw\AwesomeLogger\LoggerTrait;
use function \mpyw\AwesomeLogger\writelog;
相対指定
<?php

namespace mpyw;

use mpyw\AwesomeLogger\Logger;
use mpyw\AwesomeLogger\LoggerInterface;
use mpyw\AwesomeLogger\LoggerTrait;
use function mpyw\AwesomeLogger\writelog;

つまり,この場合は先頭の \ は完全に不必要です。書かないことが推奨される,ってどこかで見たような…(情報求む)

24
23
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
23