0

次の要件を持つかなり複雑な Web アプリケーションを作成しました。

  • APIがあります。API のバージョンが異なると、動作が異なる場合があります。しばらくの間、古いバージョンの API をサポートする必要があります。
  • Web クライアントがあります。Web クライアントは AJAX を使用してさまざまなデータを取得します。99% と言います XHR リクエストは API リクエストと同じです。したがって、これらの XHR リクエストをサポートするためのソース コードは、API 用に共有する必要があります。ただし、同じことは異なります。たとえば、ログイン API は、Web の場合は Cookie で応答し、API の場合は JSON で応答する必要があります。
  • クライアントには、iPhone、iPad、Android Phone、タブレット、ブラウザ拡張機能など、複数の種類があります。動作は、リクエストを行うプラットフォームによって異なる場合があります。

私が考えていたものを整理する 1 つの方法は、Kohana HMVC カスケード スタイルをより多くのレベルに拡張することです。例えば:

src/
htdocs/
v1/
    device_group_phone/
        device_iphone/
            controllers/
            views/
        device_android/
            controllers/
            views/
        device_default/
            conrollers/
            views/
    device_group_tablet/
        device_ipad/
            controllers/
            views/
        device_default/
            conrollers/
            views/
    device_group_default/
        controllers/
        views/
        models/        
v2/
    ...
    ...
    ...
modules/
system/

リクエストを処理する方法は次のとおりです。

 - Go to proper version.
 - if there is a controller/view device(x),
     then load it.
   else, if there exists a controller/view for device_group(x)/device_default, 
     then load it.
   else if there exists a controller/view for device_group_default
     then load it.
  • 最初の質問です。このコードを整理するためのこれよりも良い方法はありますか?
  • 2 番目の質問です。そうでない場合は、Kohana でそれを行う方法を教えてください。
4

1 に答える 1

2

なぜ既存の Kohana Cascade ファイルシステムを使用しないのですか? グループはmodulesです。必要なモジュールを ( 経由でKohana::modules()) Request プロパティに基づいて追加するだけです。したがって、Android デバイスを処理する必要がある場合、モジュール リストは次のようになります。

  • v1/device_group_phone/device_android
  • v2/device_group_phone/device_android
  • v1/device_group_phone/device_default
  • v2/device_group_phone/device_default
  • v1/device_group_default
  • v2/device_group_default
于 2012-07-10T14:19:00.097 に答える