我们在实际的项目中,经常会使用模块化开发,方便团队协作和维护,对于yaf来说,怎么分模块呢,其实也很简单,不过默认情况下,yaf没有分模块,只有一个默认Index模块,下面记录一下操作步骤:
下面所说的yaf项目目录结构均为使用yaf_cg生成的默认结构,配置也为yaf安装后的默认配置,当前需求为:新加Home和Admin模块,配置步骤如下:
第一步:首先修改conf/application.ini,在[common]配置段下添加如下配置
application.modules = 'Index,Home,Admin'
注意:手册中说一定要定义Index Module,如果不定义Index模块,在访问原有的默认模块时会报错:Fatal error: Uncaught exception 'Yaf_Exception_LoadFailed_Module' with message 'There is no module Index' in /site/OSChina/test/index.php on line 0
第二步:在application目录下新建modules目录,用来存放模块,然后在modules目录下创建Admin和Home目录,分别在Admin和Home目录下创建controllers目录用来存放对应模块的控制器
比如:创建完目录,在application/modules/Home/controllers下创建一个User.php,然后在User.php文件里定义一个User控制器
class UserController extends Yaf_Controller_Abstract { public function testAction() { echo 111; return false; } }
这时我们用http://domain.com/Home/User/test就可访问该Home模块下的User控制器下的testAction方法。
通过上面,也可以看出Yaf的控制器和方法的定义方法,为什么要在方法中return false呢,是因为Yaf默认会去加载视图,return false是为了不让它自动加载视图。
注意:Yaf的控制器名不要采用驼峰法命名,否则在文件系统区别大小写的时候会出问题
yaf的类中不能使用__construct()方法,可以用init()方法做类似的功能