目次

プラグインを実装させるための内部分岐構造

[ Category : CMS開発プロジェクト ] 2010年01月23日 23:20
 自分でも、まさかCMS開発プロジェクトなんてアホなことを言い出すとは思ってもみませんでした。でも、やると言ってしまったらやらないといけないですね…トホホ。

 さてさて、計画初期の段階からプラグインのことを想定しておかないと、プラグインの入る余地がないコードができあがってしまいます。なので、今日はプラグインの実装ってどうやってやるのかを想像してみました(想像かよ…)。

プラグイン実装のための内部分岐構造を想像してみた

 例えば、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というクラスに対して処理を追加する場合は

 という設計で進めたらいいような気がします。普通一般的には、どんな設計をするのでしょうね?

Discussion