さてさて、計画初期の段階からプラグインのことを想定しておかないと、プラグインの入る余地がないコードができあがってしまいます。なので、今日はプラグインの実装ってどうやってやるのかを想像してみました(想像かよ…)。
例えば、AAAという関数があるとします
function AAA(){ 関数の処理内容 }
そして、このAAAという関数に対してプラグインで機能拡張させたい場合のアプローチは3つあると思うんです。
ということは、AAAという関数を使う前後に分岐構造を作ってあげるとイイことになりそうです
function AAA(){ 関数の処理内容(最終処理を除く直前まで) if (function_exists(post_AAA)){ post_AAA(); // AAAという関数の後に処理を追加するための「post_AAA()」があればそれを実行する } 関数の最終処理 } if (function_exists(pre_AAA)){ pre_AAA(); // AAAという関数の前に処理を追加するための「pre_AAA()」があればそれを実行する } if (function_exists(alt_AAA)){ alt_AAA(); // AAAという関数の代替関数である「alt_AAA()」があればそれを実行する }else{ AAA(); // 代替関数がなければ通常通りAAAを実行する }
実際はクラスを使うことになるでしょうから、class_existsで対応すればいいのかな? 要するに、AAAというクラスに対して処理を追加する場合は
という設計で進めたらいいような気がします。普通一般的には、どんな設計をするのでしょうね?