PHPで関数・クラスなどのエイリアスを作成する方法まとめ

エイリアスというのは関数名やクラス名、定数名につけられた別名のこと

これを作成することで異なる関数名で同じ処理を実行したり、異なるクラス名から同じクラスをインスタンス化することなどができます。

そしてここではPHPにおいて

  • クラス名のエイリアス作成
  • 関数名のエイリアス作成
  • 定数名のエイリアス作成

の3つに分けて作成方法をコード例と一緒にまとめてみました。

クラス名のエイリアス作成

まず初めはクラスのエイリアスを作る方法

この作成にはuse演算子というものを使うのが一番簡単です。

 

例えば元のクラス名を Origin  、エイリアスを Alias  とすると、

次のようにuse演算子を使えばOK

これで Origin  に対して Alias  という別名が作成されます。

詳しい作り方やコード例については次記事でもまとめた通り

最新のPHPを使っているならこの方法を使うのが確実だと思います。

 

ただしこのエイリアス作成機能がサポートされたのはPHP5.3以上からです。

それ以下ではuse演算子でエイリアス作成はできないので要注意

もし5.3未満で無理やり作るとするなら次のような感じになります。

PHPでは文字列からクラスインスタンスを作ることが可能です。

それを応用して $Alias = 'Origin';  のようにクラス名を保持する変数を作成し、

変数に対して new $Alias();  とすることでインスタンス化しています。

こういう風にuse演算子を使わないなら少しトリッキーなことをしないと無理です。

関数名のエイリアス作成

お次は関数名のエイリアスを作る方法

この作り方には次の2つあります。

  • call_user_func_array関数を使う
  • use演算子を使う(PHP5.6以上)

それぞれのやり方は次に説明する通り

 

まず1つめはcall_user_func_array関数を使う方法について

call_user_func_array  は関数名と引数配列から関数を実行するための関数です。

これを使ってエイリアス作成しているのが次のコード例

エイリアス関数内で call_user_func_array  を実行するだけです。

ちなみに上コードの func_get_args  は呼び出し元の関数に渡された引数配列を返す関数なので、エイリアス関数にわざわざ引数を設定する必要はありません。

 

そして関数エイリアスを作成するもう1つの方法がuse演算子を使うこと

例えば元の関数名を func  、エイリアス関数を alias   とすると次のような書き方が可能

これだけで alias  が完全に func  の別名になります。

ただしクラスの場合と違って、関数エイリアスは5.6以上からしか使えないことに要注意です。

 

ちなみにこの2つの方法については次記事でもまとめました。

PHP5.6以上を使っているならuse演算子を使った方が楽ですね。

定数名のエイリアス作成

関数に加えて定数に対してもエイリアス作成は可能です。

そのために使えるのが次の2つの方法

  • 別名の定数に同じ値を代入
  • use演算子を使う(PHP5.6以上)

それぞれのやり方は次の通りです。

 

まず別名の定数に同じ値を代入する方法について

こちらは文字通り別定数を作って元の定数値を代入するだけです。

例えば次が簡単なコード例

同じ値を持つ定数を2つ作成するだけなので本当に単純です。

 

そして次にuse演算子を使った方法について

こちらは関数同様PHP5.6以降からサポートされています。

エイリアスの作り方は例えば定数名を FOO  、エイリアス定数名を BAR  とすると次のような感じ

これで FOO  の別名として BAR  という定数が作成されます。

 

定数エイリアスの詳しい作り方や注意点は次記事でもまとえめたので、そちらをどうぞ

特にクラス内宣言した定数のエイリアスを作る場合は少しだけ注意が必要です。

ここまでのまとめ

ということでエイリアス作成の方法まとめ

  • クラス名のエイリアス作成
    PHP5.3.0からサポートされた機能(use演算子)を使う
  • 関数名のエイリアス作成
    call_user_func_array関数の使用、またはPHP5.6移行からサポートされた機能を使う
  • 定数名のエイリアス作成
    別定数に同じ値を代入、またはPHP5.6移行からサポートされた機能を使う

もしPHP5.3以上(関数や定数なら5.6以上)を使っているなら正式にサポートされたuse演算子によるエイリアス作成を試した方が確実で簡単だと思います。

以上PHPでクラス・関数・定数のエイリアスを作る方法についてでした。