それらが開発者によって作成された場合、フォーマットを考え出すのは簡単なはずです...たとえば、JSONを使用します。
{
"callback" : {
"contextType": "instance", // or "static"
"callable" : "phpFunctionName",
"arguments" : []
}
}
したがって、この機能を使用できるモデルでは、次のようにすることができます。
protected function invokeCallback($json, $context = null) {
$data = json_decode($json, true);
if(isset($data['callaback'])) {
if($data['contextType'] == 'instance') {
$context = is_object($context) ? $context : $this;
$callable = array($context, $data['callable']);
} else {
// data[callable] is already the string function name or a array('class', 'staticMethod')
$callable = $data['callable'];
}
if(is_callable($callable) {
return call_user_func_array($callable, $data['arguments'];
} else {
throw new Exception('Illegal callable');
}
}
return false;
}
そこで発生する必要があるエラー処理と、許可したい呼び出し可能オブジェクトのスクリーニングがいくつかありますが、アイデアは得られます。