PHPで可変長引数の関数を定義
Posted by mkamo on 2009年7月1日
PHPで可変長引数の関数を定義する方法のメモ.
PHP4以降では関数に渡された引数の情報を取得するために以下の関数を使うことができる.
- func_num_args()
関数に渡された引数の数を返す - func_get_arg(int arg_num)
関数に渡された引数のうちarg_num番目のものを返す.arg_numは0から数える整数 - func_get_args()
関数に渡された引数を配列で返す
可変長の引数を受け取る関数の例は以下のとおり.必須の引数$msg以外に任意の個数の引数を受け取り,$msg内の「{数字}」の箇所を置換した文字列を返す.この例ではfunc_get_args()だけを使っているが,func_num_args()とfunc_get_arg()を使っても実装できる.
<?php
function replaceMsg($msg) {
/// すべての引数を取得
$args = func_get_args();
/// $msgを$argsから取り除く
array_shift($args);
$replacePairs = array();
foreach ($args as $i => $arg) {
$replacePairs['{'.$i.'}'] = $arg;
}
return strtr($msg, $replacePairs);
}
echo replaceMsg('There are {0}, {1} and {2}.', 'foo', 'bar', 'baz'); /// => There are foo, bar and baz.
?>