Featured image of post PHPで引数にcallback関数を渡す関数を作る

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

Twitter ツイート Hatena Bookmark ブックマーク

PHPで引数にコールバック関数を渡すメソッドや関数って沢山あると思います。
それらと同じような事を自分でつくるとしたらどうするのかなぁーとか考えてました。

どうやらPHPにはis_callableという関数があるらしくcall_user_funcと一緒に組み合わせて使えば簡単に作成することができます。

1
2
3
4
5
6
7
8
<?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;
}

という感じに関数を作成すればいいかと思います。

んでもって以下のように書いて実行すれば動きまする。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
function output($str) {
	echo "```
\n";
	echo $str."\n";
	echo "```\n";
}


$str = "今日はとってもいい天気です";
callbackArgTest( $str, 'output' );

実行結果

1
今日はとってもいい天気です, write date:2012/01/14 14:49:56

ちなみにPHP5.3以降ならクロージャが使えるのでこんな風にできます。

1
2
3
4
5
6
callbackArgTest( $str, function( $str ){
	echo "```
\n";
	echo $str."\n";
	echo "```\n";
});

クラスとかの場合どうするの?って思いましたが、普通になかでcall_user_funcしているだけなので以下のように書けばおkです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class testObj
{
	public function output( $str ) {
		echo "```
\n";
		echo $str."\n";
		echo "```\n";
	}
}


$obj = new testObj();
callbackArgTest( $str, array( $obj, 'output' ) );
comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。