PHPで関数のエイリアス(別名)を作成する2つの方法

本来のPHP自体には関数の別名エイリアス)を作る機能はありません。

つまり同じ処理を異なる関数名から呼び出すのは不可能ということ

しかし新バージョンの追加機能や標準関数を使えばそれらしいものを作ることは可能です。

そこでここではPHPで関数エイリアスを作る方法をまとめてみました。

関数エイリアスを作る方法まとめ

その方法とは次の2つ

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

もしPHP5.6以上を使っているならuse演算子を使うのが一番簡単です。

 

そしてここでエイリアス化の例として使用するのは次の関数

関数名は echo_div  で、引数 $text  をdiv要素として表示する処理です。

この関数を print_div  という別名でエイリアス化するコード例をそれぞれ説明していきます。

1. call_user_func_array関数を使う

まず1つ目は標準関数 call_user_func_array  を使ってエイリアス化する方法

この関数はコールバックを $callback  、引数配列を $param_arr  として次のように使用可能

返り値は $param_arr  の引数とともに実行した関数が返した返り値になります。

 

そしてこれを使って関数をエイリアス化してるのが次のコード例

上コードの func_get_args  は呼び出された関数の引数リストを配列で返す関数

なので print_div  の宣言時にわざわざ echo_div  と同じ引数を書く必要はありません。

 

ちなみにクラス内関数をエイリアス化する場合は少し注意が必要です。

例えば次はHogeクラス内にある echo_div  をエイリアス化しているコード例

少し長めですが重要なのは array( 'Hoge', 'echo_div')  の部分

クラス関数の場合はcall_user_func_array関数に

クラス名とその関数名を順番に持つ配列

を渡す必要があることに注意です。

これはPHP独特の書き方なので慣れないと違和感のある書き方かもしれません。

 

以上がcall_user_func_array関数を使ったエイリアスの作成方法

PHPバージョンが5.6未満ならこちらを使うのが確実で楽な方法だと思います。

2. use演算子を使う(PHP5.6以上)

PHP5.3.0以上からはエイリアス作成が公式にサポートされています。

そのために使えるのがuse演算子というもの

use演算子を使えばクラス名やインターフェース、名前空間の別名が作れます。

 

そして関数についてはPHP5.6以降からuse演算子がサポートされるようになりました。

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

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

ちなみにPHP5.6移行なら関数だけでなく定数などもエイリアス化できるみたいです。

 

実際にこれを使って関数をエイリアス化しているのが次のコード例

手順的には call_user_func_array  を使った方法より簡単ですね。

機能的にもPHPでサポートされているので、確実で安全な方法かも

クラスや定数のエイリアスを作るには・・・

ここまでが関数エイリアスの作成方法

これに加えてPHPではクラスや定数名などのエイリアスにも対応しています。

 

まずはクラスの別名を作る場合、

元のクラス名を Origin  、エイリアス名を Alias  とすると次のように書くことが可能

参考記事 : PHPでクラスのエイリアス(別名)を作成する方法

 

そして次は定数の別名を作りたい場合、

元の定数名を FOO  、エイリアス定数名を BAR  とすると次のように書くことが可能

参考記事 : PHPで定数のエイリアス(別名)を作成する2つの方法

 

対応PHPバージョンについては

  • クラスの場合 ⇒ PHP5.3.0以上
  • 定数の場合  ⇒ PHP5.6以上

からサポートされました。

ただし関数と同じく定数もPHP5.6以上からしか使えないことに注意です。

ここまでのまとめ

ということで関数エイリアスを作る方法まとめ

  • call_user_func_array関数を使う

    例えば関数 func  をエイリアス化する関数 alias  内で

    のように書けばそれが func  のエイリアスになる

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

    元関数を func  、エイリアス関数を alias  とすると

    のような書き方でエイリアス化が可能

基本的にはどっちを使っても問題はありません。

ただ分かりやすくてバグなどが入り込みにくいのはuse演算子を使う方法だと思います。

以上PHPで関数の別名(エイリアス)を作る方法についてでした。

PHP

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください