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

January 14, 2012,
tags: callback php 関数


このエントリーをはてなブックマークに追加

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' ) );
comments powered by Disqus