介绍

每个控制器都需要继承Yaf_Controller_Abstract
控制器方法名,都需要加上Action后缀,比如ShowAction

例子

<?php
class UserController  extends Yaf\Controller_Abstract
{
    //定义show方法
    public function showAction()
    {
        echo "用户信息";
    }
}

关闭渲染模版

1、直接在控制器的方法中return false;
2、使用方法关闭Yaf\Dispatcher::getInstance()->disableView();

如果想关闭控制器中所有方法的模版渲染,可以在控制器的init方法直接禁用
控制器在执行方法前,都会先执行init()方法

public function init()
{
    Yaf\Dispatcher::getInstance()->disableView();
}

传入多个参数

定义方法中的参数传递

我们可以这样访问传入参数
http://myHost/index.php/user/user/show/name/xs/age/18

class UserController extends \Yaf\Controller_Abstract
{
    // 这里name和age就是uri的参数
    public function showAction($name, $age)
    {
        echo "I'm {$name}, age {$age}";
        return true;
    }
}
根据请求直接获取参数
$name =  $this->getRequest()->getParam('name');
$age  =  $this->getRequest()->getParam('age');

$get  = $this->getRequest()->getQuery();
$post = $this->getRequest()->getPost();
$file = $this->getRequest()->getFiles();

$name = $this->getRequest()->get('name');
$name = $this->getRequest()->getPost('name');

// 当前请求方法
$this->getRequest()->getMethod();

$this->getRequest()->getCookie('name')

// 原生php $_SERVER 的值
$this->getRequest()->getServer('REMOTE_ADDR');
判断请求类型
$this->getRequest()->isGet();
$this->getRequest()->isPost();
$this->getRequest()->isXmlHttpRequest()

Yaf 的响应

$this->getResponse()->setBody('test');
$this->getResponse()->response();

Yaf模块

Yaf是支持多模块的,先来简单看下多模块的目录结构

还需要在application.ini配置模块

模块,必须有Index模块开头,且逗号分隔,不能有空格

application.modules = 'Index,User,Api'
注意URl路径

http://localhost/myYaf/index.php/user/user/show/name/xs/age/18
第一个user 是 模块
第二个user是控制器
第三个show是方法

如果uri只有2段的时候,
第一个就是控制器,第二段就是方法