Architecture 如何使用Kohana v3.1组织一个复杂的web应用程序?
我们编写了一个非常复杂的web应用程序,它具有以下要求:Architecture 如何使用Kohana v3.1组织一个复杂的web应用程序?,architecture,kohana,code-organization,Architecture,Kohana,Code Organization,我们编写了一个非常复杂的web应用程序,它具有以下要求: 它有一个API。不同版本的API可能表现不同。我们必须支持旧版本的API一段时间 它有一个web客户端。web客户端使用AJAX来获取各种数据。假设99%的XHR请求与API请求相同。因此,支持这些XHR请求的源代码应该为API共享。但是,它们是不同的,例如,对于web,登录api应该用cookie响应,对于api,应该用JSON响应 有多种类型的客户端,如iPhone、iPad、Android手机、平板电脑、浏览器扩展等。根据发出请求
- 它有一个API。不同版本的API可能表现不同。我们必须支持旧版本的API一段时间
- 它有一个web客户端。web客户端使用AJAX来获取各种数据。假设99%的XHR请求与API请求相同。因此,支持这些XHR请求的源代码应该为API共享。但是,它们是不同的,例如,对于web,登录api应该用cookie响应,对于api,应该用JSON响应李>
- 有多种类型的客户端,如iPhone、iPad、Android手机、平板电脑、浏览器扩展等。根据发出请求的平台,行为可能会有所不同
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.
- 第一个问题,有没有比这更好的方法来组织代码
- 第二个问题,如果不是,如何在科哈纳做到这一点
Kohana::modules()
)。所以,如果您需要处理android设备,模块列表如下:
- v1/设备\组\手机/设备\安卓
- v2/设备\组\手机/设备\安卓
- v1/设备\组\电话/设备\默认值
- v2/设备\组\电话/设备\默认值
- v1/设备组默认值
- v2/设备\组\默认值
Kohana::modules
?我想在加载所有其他通用模块后加载这些模块。Kohana::modules(Kohana::modules()+array('v1_android'=>v1/device_group_phone/device_android,…)代码>