高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

PHPのコールバック

Perlのs///e;*1の代替として、PHPにはpreg_replace_callbackと言う関数があります。この関数の第二引数には、preg_replaceが置き換え文字列を指定するのに対して、これでは関数を指定します。
この関数の指定の仕方が、これまたおかしくって…。なんと、関数名を文字列で指定するんですね、まったく、どうなっているのやら。
クラスのメンバをコールバック関数に指定する場合もまた変です。array($this, 関数名)を指定するとのこと。またまた訳が分かりません。
どうみてもPerl式の――サブルーチンのリファレンスという形がスマートですがねぇ。どうも例外的な記法が多いのは好きになれないな。

*1:置き換え後の文字列をPerlコードと見なして実行、結果と置き換える