エイリアスというのは関数名やクラス名、定数名につけられた別名のこと
これを作成することで異なる関数名で同じ処理を実行したり、異なるクラス名から同じクラスをインスタンス化することなどができます。
そしてここではPHPにおいて
- クラス名のエイリアス作成
- 関数名のエイリアス作成
- 定数名のエイリアス作成
の3つに分けて作成方法をコード例と一緒にまとめてみました。
クラス名のエイリアス作成
まず初めはクラスのエイリアスを作る方法
この作成にはuse演算子というものを使うのが一番簡単です。
例えば元のクラス名を Origin 、エイリアスを Alias とすると、
次のようにuse演算子を使えばOK
1 |
use Origin as Alias |
これで Origin に対して Alias という別名が作成されます。
詳しい作り方やコード例については次記事でもまとめた通り
最新のPHPを使っているならこの方法を使うのが確実だと思います。
ただしこのエイリアス作成機能がサポートされたのはPHP5.3以上からです。
それ以下ではuse演算子でエイリアス作成はできないので要注意
もし5.3未満で無理やり作るとするなら次のような感じになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** 元のクラス */ class Origin{ function say_hello(){ print_r('Hello!!'); } } /** Originの別名を変数として作成 */ $Alias = 'Origin'; /** Originのインスタンス作成 */ $alias = new $Alias(); $alias->say_hello(); |
PHPでは文字列からクラスインスタンスを作ることが可能です。
それを応用して $Alias = 'Origin'; のようにクラス名を保持する変数を作成し、
変数に対して new $Alias(); とすることでインスタンス化しています。
こういう風にuse演算子を使わないなら少しトリッキーなことをしないと無理です。
関数名のエイリアス作成
お次は関数名のエイリアスを作る方法
この作り方には次の2つあります。
- call_user_func_array関数を使う
- use演算子を使う(PHP5.6以上)
それぞれのやり方は次に説明する通り
まず1つめはcall_user_func_array関数を使う方法について
call_user_func_array は関数名と引数配列から関数を実行するための関数です。
これを使ってエイリアス作成しているのが次のコード例
1 2 3 4 5 6 7 8 9 |
/** オリジナルの関数 */ function echo_hello( ){ echo 'Hello World'; } /** エイリアス関数の作成 */ function print_hello(){ return call_user_func_array("echo_hello", func_get_args()); } |
エイリアス関数内で call_user_func_array を実行するだけです。
ちなみに上コードの func_get_args は呼び出し元の関数に渡された引数配列を返す関数なので、エイリアス関数にわざわざ引数を設定する必要はありません。
そして関数エイリアスを作成するもう1つの方法がuse演算子を使うこと
例えば元の関数名を func 、エイリアス関数を alias とすると次のような書き方が可能
1 |
use function func as alias; |
これだけで alias が完全に func の別名になります。
ただしクラスの場合と違って、関数エイリアスは5.6以上からしか使えないことに要注意です。
ちなみにこの2つの方法については次記事でもまとめました。
PHP5.6以上を使っているならuse演算子を使った方が楽ですね。
定数名のエイリアス作成
関数に加えて定数に対してもエイリアス作成は可能です。
そのために使えるのが次の2つの方法
- 別名の定数に同じ値を代入
- use演算子を使う(PHP5.6以上)
それぞれのやり方は次の通りです。
まず別名の定数に同じ値を代入する方法について
こちらは文字通り別定数を作って元の定数値を代入するだけです。
例えば次が簡単なコード例
1 2 3 4 5 6 7 |
const FOO = 'something'; const BAR = FOO; print_r(FOO); /// => something print_r(BAR); /// => something |
同じ値を持つ定数を2つ作成するだけなので本当に単純です。
そして次にuse演算子を使った方法について
こちらは関数同様PHP5.6以降からサポートされています。
エイリアスの作り方は例えば定数名を FOO 、エイリアス定数名を BAR とすると次のような感じ
1 |
use const FOO as BAR; |
これで FOO の別名として BAR という定数が作成されます。
定数エイリアスの詳しい作り方や注意点は次記事でもまとえめたので、そちらをどうぞ
特にクラス内宣言した定数のエイリアスを作る場合は少しだけ注意が必要です。
ここまでのまとめ
ということでエイリアス作成の方法まとめ
- クラス名のエイリアス作成
PHP5.3.0からサポートされた機能(use演算子)を使う
- 関数名のエイリアス作成
call_user_func_array関数の使用、またはPHP5.6移行からサポートされた機能を使う
- 定数名のエイリアス作成
別定数に同じ値を代入、またはPHP5.6移行からサポートされた機能を使う
もしPHP5.3以上(関数や定数なら5.6以上)を使っているなら正式にサポートされたuse演算子によるエイリアス作成を試した方が確実で簡単だと思います。
以上PHPでクラス・関数・定数のエイリアスを作る方法についてでした。