次の要件を持つかなり複雑な 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 でそれを行う方法を教えてください。