2

以前にこの質問をしました:モジュール間のCodeigniter Class Inheritance(wiredesigns)

アプリケーション/コアでカスタムコントローラーを拡張することで、私がやりたいことを行う方法を提供するその質問への回答を受け入れました。このアプローチは理にかなっているように見え、両方のモジュールが独立して機能できるという追加の利点がありました。

ただし、考えてみると、これがこの状況に最適なアプローチであるかどうかはわかりません。なぜなら、My Productsコントローラーはアイテムコントローラーのほぼすべての機能を必要とするため、このアプローチではアイテムコントローラーがほとんど空のままになるためです-わかりません私はこれが好き。

質問1

以前に提案されたアプローチを引き続き使用する可能性がありますが、2つのオプションを比較検討できるように、モジュール間でクラスを拡張する方法があるかどうかを知りたいです (以下の元の質問を参照)。

質問2

さらに、モデル クラスの多くを再利用できるはずだと思います。アプリ/コア アプローチで MY_Model を使用すると、これを実行できることがわかります。しかし...

a) 別のモジュール モデルに直接アクセスする方法はありますか?

b) コントローラーの質問 1 と同様の方法で、モデルをモジュール間で拡張できますか?

前の質問

私の CI2 アプリは、wiredesigns モジュラー レイアウトを使用しています。

次のように、modules というフォルダーに item と product という 2 つのモジュールがあります。

/application
    /modules
        /item
        /product

Item には、このように始まる item というコントローラーがあります。

class Item extends MX_Controller
{
    //code here
}

私の製品コントローラが別のモジュールで私のアイテムコントローラを拡張するために何をする必要がありますか?

4

1 に答える 1

1

ここでの正解は次のとおりです。

しないでください

なぜこれをやろうとしているのですか?ロジックをライブラリまたはある種の共有ファイルに配置し、代わりにそのライブラリへの呼び出しを実装します。

Itemフォルダーに抽象クラスを作成するapplication/librariesと、HMVC に組み込まれているオートローダーが自動的にそれをロードします。これがモジュールにある必要がある理由はなく、コントローラーである必要もありません。

于 2013-01-06T02:36:13.123 に答える