PHPではバージョン5.3.0以上からエイリアス機能がサポートされました。
ここではその機能を使ってクラスのエイリアス(別名)を作る方法を紹介します。
クラスエイリアス作成には use を使う
最初に書いたようにPHP5.3以上ではエイリアスの作成に対応しています。
そのエイリアス作成に使われるのがuse演算子というもの
5.3からこの演算子を使うことクラス名のエイリアス作成ができるようになりました。
やり方は元のクラス名を Hoge 、エイリアス名を Alias とすると次のような感じ
1 |
use Origin as Alias |
これで Origin に対して Alias という別名が作成されます。
ちなみにこの書き方は名前空間やインターフェース(後で紹介)でも同様です。
そして次はuse演算子を使ったクラスエイリアス作成のコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/** クラスエイリアスの作成 */ use Hoge as Piyo; /** 元のクラス */ class Hoge{ function say_hello(){ print_r('Hello!'); } } /** 元のクラス名でインスタンス化 */ $hoge = new Hoge(); $hoge->say_hello(); /// => Hello! /** エイリアスクラス名でインスタンス化 */ $piyo = new Piyo(); $piyo->say_hello(); /// => Hello! |
これはあるクラス Hoge のエイリアス Piyo を作成しているコードです。
別名を作成したので、 Hoge 、 Piyo のどちらも同じクラス名として扱うことが可能
ちなみに上コードみたいにuse演算子はクラス宣言の前に書いてOKです。
以上がクラスのエイリアスを作る方法
あまり使う場面は少なそうですが、知っておくと何かの役に立ちそうです。
ただしPHP5.3以上でしか使えないということだけは注意
ちなみにインターフェースのエイリアスを作成するには・・・
インターフェースというのは空の関数だけの集まりを定義したクラスみたいなもの
別々のクラスに共通のメソッドを実装したいときによく使われます。
このインターフェースもクラス同様エイリアス(別名)の作成が可能です。
やり方はクラスの時と全く一緒
例えば次は Greeting の別名として Aisatu を作成しているコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/** インターフェースのエイリアス作成 */ use Greeting as Aisatu; /** 元のインターフェース */ interface Greeting{ public function say_hello(); } /** エイリアスインターフェースを実装 */ class Hoge implements Aisatu{ public function say_hello(){ print_r('Hello!'); } } $hoge = new Hoge(); $hoge->say_hello(); |
上コードみたく use Greeting as Aisatu; のように書けばOKです。
あとは implements でどちらともクラスに実装することが可能になります。
PHP5.6以上なら関数や定数のエイリアスも作成可
クラスのエイリアス作成はバージョン5.3.0移行からの機能です。
これに加えてPHP5.6以上からは関数や定数のエイリアス作成もサポートされました。
関数と定数の宣言の仕方はそれぞれ次のようにuse演算子を使うだけ
1 2 3 4 5 |
/** 定数のエイリアス作成 */ use const FOO as BAR; /** 関数のエイリアス作成 */ use function func as alias; |
関数エイリアスの詳しい作り方やコード例は次の記事で、
定数エイリアスの作り方やコード例については次記事で紹介した通りです。
PHP5.6以上でしか使えないですが、場合によっては便利な機能だと思います。
ここまでのまとめ
ということでクラスエイリアスの作成方法まとめ
- PHP5.3以上から作成可能
エイリアス機能がサポートされたのはバージョン5.3以上から
それ未満のバージョンでは利用できないことに注意! - 作成にはuse演算子を使う
例えば use Origin as Alias; とするとクラス Origin のエイリアスとして Alias が作成可能
個人的にはあまり使うことのない機能かなと思います。
ですが正式に機能としてサポートされてるので必要な場面では役立ちそうですね。
以上PHPでクラス名のエイリアスを作成する方法についてでした。