最近要构建个比较复杂项目,划分模块的很多,查了下用户手册模块的目录配置比较简单,但关于模型多目录的设置却没有找到,后来全网搜索终于找到多目录模型的用法,在此梳理下做个记录。
开启多模块设置需要指定application.ini
中的modules参数,多个模块用,
隔开。顺便指定下默认模块。
;模块配置
application.modules = "index,api,member"
;设置默认模块
application.dispatcher.defaultModule = index
然后建立相关模块目录,大致目录解构如下。
+ application
|+ models //模型目录
|+ Api //api模型目录
- Member.php
|+ Member //member模型目录
- Member.php
- Member.php
|+ controllers //默认控制器目录
|+ views //默认视图目录
|+ modules //其他模块目录
|+ Api //api模块文件夹
|+ controllers //模块下的控制器目录
|+ views //模块下的视图目录
|+ Member //member模块文件夹
|+ controllers //模块下的控制器目录
|+ views //模块下的视图目录
|+ library //自定义或第三方类库目录
|+ plugins //插件目录
默认模块的控制器文件和模版文件可以直接放到application
下的相关目录下,其它模块的要放到modules
下的相关目录中,至此多模块配置全部完成。
下面说说模型的目录分组调用及注意事项,Yaf框架的模型目录是固定的不会跟随模块目录来建立,在任何模块下的控制器中调用模型都是基于models
目录来查找,这部分的内容手册中貌似没有什么说明,其实yaf的控制器和模型都是可以通过_
下划线的规则来进行目录分组的。比如一个模型类名为Api_TestModel,调用时会自动加载/application/models/api/Member.php模型文件。
注意看上面的目录结构,在models
目录下一共有3个member.php模型文件,分别对应的模型类名如下
class MemberModel extends DB { }
class Api_MemberModel extends DB { }
class Member_MemberModel extends DB { }
注意:Yaf框架的大多数文件夹名称都是以小写字母命名,分模块后,模块目录首字母需要大写。控制器或模型分组后,分组目录的首字母也需要大写。
实际开发过程中不建议刻意对模型进行分组,毕竟代码的灵活性与重用性很重要。控制器也可以这样命名的哦,有好奇心的同学可以去动手了解一下。