PHPで引数にcallback関数を渡す関数を作る

PHPで引数にコールバック関数を渡すメソッドや関数って沢山あると思います。
それらと同じような事を自分でつくるとしたらどうするのかなぁーとか考えてました。
どうやらPHPにはis_callableという関数があるらしくcall_user_funcと一緒に組み合わせて使えば簡単に作成することができます。
<?php
function callbackArgTest( $str, $callback ) {
$str .= ", write date:".date('Y/m/d H:i:s');
if ( is_callable( $callback ) ) {
return call_user_func( $callback, $str );
}
return false;
}
という感じに関数を作成すればいいかと思います。
んでもって以下のように書いて実行すれば動きまする。
<?php
function output($str) {
echo "```
\n";
echo $str."\n";
echo "```\n";
}
$str = "今日はとってもいい天気です";
callbackArgTest( $str, 'output' );
実行結果
今日はとってもいい天気です, write date:2012/01/14 14:49:56
ちなみにPHP5.3以降ならクロージャが使えるのでこんな風にできます。
callbackArgTest( $str, function( $str ){
echo "```
\n";
echo $str."\n";
echo "```\n";
});
クラスとかの場合どうするの?って思いましたが、普通になかでcall_user_funcしているだけなので以下のように書けばおkです。
class testObj
{
public function output( $str ) {
echo "```
\n";
echo $str."\n";
echo "```\n";
}
}
$obj = new testObj();
callbackArgTest( $str, array( $obj, 'output' ) );