0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP class useのasについて

Posted at

#名前空間のuseのasについて検証した。

名前空間についての基礎はこちら
class 基本 名前空間

##執筆のきっかけ
cakephpを触っているとよく

namespace App\Model\Entity;

use Cake\ORM\Entity;

class hoge()
{
}

といった内容を見かけます。

あれ、useってasで別名(エイリアス)つけるんじゃ、、、

そう思って調べてみました。

##useのasは省略出来る
以下の記事にまとまっていました
参考:https://remotestance.com/blog/3064/

##そもそも名前空間とは
たくさんのファイルがあって、同名のクラスが重複されて使用されている場合、requierなどで別ファイルを読み取ってクラスを使用した時に、クラス名が重複する場合がある。
そういった時に名前空間を使用すればクラスを呼び出す際に重複を防げる

##実際のコードで見てみる(それぞれのコードは同一のルート上にある装丁です)
例1)
[use.php]

<?php 
namespace person\think\like1;
class like
{
    public function music(){
        echo 'bz'."\n";
    }
}

[use2.php]

<?php 
namespace person\think\like2;
class like
{
    public function music(){
        echo 'Tokio'."\n";
    }
}

[use3.php]

<?php 
require_once 'use.php';
require_once 'use2.php';
use person\think\like1; //use person\think\like1 as like1;と同じ意味
use person\think\like2; //use person\think\like1 as like2;と同じ意味

$like1 = new like1\like();
$like1->music(); //bz

$like2 = new like2\like();
$like2->music(); //Tokio

上記の例はuse.php, use2.phpでそれぞれ同名のクラスlikeを定義している。
use3.phpでそれぞれのファイルを読み込んだ後、クラスlikeを呼び出している。
上記例でもしnamespaceの記述がuse.php, use2.phpでなければ、use3.phpで呼び出した際に「エラーが出る or echoの結果が表示されない」となる。

##useのasについて
use3.phpのようにクラスを呼び出して使用したいファイルではuseを使用することで、クラスを呼び出す際の記述を簡潔に書ける。
asを使用することで呼び出すと時の名前を自由に設定できる。

例えば上記例ではasを使用していませんが

例2)
[use3.php]

use person\think\like1 as bz;
use person\think\like2 as Tokio;

$like1 = new bz\like();
$like1->music(); //bz

$like2 = new Tokio\like();
$like2->music(); //Tokio

のように使用出来ます。

##結局as使うのと使わないのって何が違うの?
上記までの説明を踏まえると
asはuseを使用する際に自由に名前(エイリアス)をつける時に使用するが、特に必要がなければasを書かず
以下の例1のように
例1抜粋

use person\think\like1; 
use person\think\like2; 

$like1 = new like1\like();
$like1->music(); //bz

$like2 = new like2\like();
$like2->music(); //Tokio

like1, like2を例2のようにbzTokioという名前の代わりにそのまま使用出来るのでより簡潔に書けます。

##まとめ
asを使用するしないはどちらでも良いと思いますが、asは省略出来るということを押さえておくとフレームワークを使用する際に理解が進むと思います。

0
1
0

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?