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