PHPではこれを行うことができますか?他の関数のパラメータとしてPHP関数
testdone
これは私の本当の問題だった:
function create_transaction($obj, $func, $errorMsg)
{
try {
$obj->transaction('START');
$func();
$obj->transaction('COMMIT');
} catch(Exception $e) {
$obj->transaction('ROLLBACK');
throw new exception($errorMsg . ' ---> ' . $e);
}
}
だから私はこのようcreate_transactionのこの関数を呼び出すことができます。
出力されるようにfunction foo($c) {
$c;
echo 'done';
}
foo(function() {
echo 'test'
});
create_transaction($obj, function() {
echo 'test';
// this should be a database CRUD process
// to make it simple, i just put echo.
}, 'error');
create_transaction()は、STARTとCOMMITの間にファンクションコードを挿入します。
しかし、この方法は、エラーを返す:
Parse error: syntax error, unexpected T_FUNCTION
私が書いたところ、このエラーが行である:
create_transaction($obj, function() { // Error here
私はそれはあなたhttp://stackoverflow.com/questions/627775/php-pass-function-as-param-then-call-the-functionを助けて –
それが必要だと思い、このリンクをチェックしてくださいすることができます関数 '$ c()'( 'foo'の本体にある)を実行すると動作します。 – Arjan
@arjan、問題は、関数c()は動的で、私はfoo()に他のコードを注入したいので、$ cの中のどのプロセスであれ、終了したら "done"をエコーします。 –