複数のメソッドやプロパティをチェーンするコールバックを作成するための推奨ソリューション?
質問
基本的に個々のオブジェクトのCRUD管理を行うためのリストを構築するビルダータイプのインターフェイスに取り組んでいます(ActiverCordを使用しているため、オブジェクト==データベースレコードを使用しています)。
リストオプションの列の値とパラメーターを柔軟に指定するために、当初は次のような配列としてコールバック引数を実装しました。
'params' => array(
'static' => $this->institution->id,
array(
'method1' => array(
'method_name',
array('arg1', 'arg2')
),
'prop1' => 'id')
このソリューションは、不器用さなどの点でいくつかの明らかな欠点を提示しますが、うまくいきました。
同僚の提案では、閉鎖を実装しようとしましたが、クラスの別の要件のために、閉鎖では機能しないことがわかったクラスのすべてのデータをシリアル化する必要があります。閉鎖との構文は明らかにはるかに単純でした:
'params' => array(
$this->institution->id,
function($obj) { return $obj->method_name($arg1, $arg2)->id; }
)
したがって、最初の質問は、閉鎖をシリアル化可能な形式(文字列など)で保存し、クラスが非正規化されたら閉鎖に戻す方法があるかどうかです。
または、この種のコールバックの問題を解決するためのより良いインターフェイスに関する提案を提供できますか?
解決
リフレクションを使用して閉鎖を拡張して必要なことを行う方法については、優れた詳細な投稿があります。 シリアル化と反射によるPHP 5.3閉鎖を拡張します. 。とはいえ、オブジェクトを代わりに渡す必要があるため、これは元のソリューションよりも厄介ではないのだろうかと思います。効果的にわずかに異なって体格化するだけで、パフォーマンスがヒットするだけかもしれません。
所属していません StackOverflow