StartMVC开发手册

可以快速上手的开发文档

手册目录

控制器


控制器定义

框架核心控制器Controller,位于/startmvc/core/Controller.php

公共控制器BaseController,位于/app/common/BaseController.php,继承于核心控制器Controller。相当于核心控制器的扩展。

自定义控制器存放在模块下的controller目录下,根据自己需要,可直接继承核心Controller或BaseController,控制器为一个类,一个控制器类就是一个php文件。


控制器规范

控制器类名为:控制器名称Controller(首字母大写)。

控制器文件名为:控制器名称Controller.php(首字母大写)。

控制器的命名空间为:app\模块\controller。


创建控制器

// app/home/controller/IndexController.php
namespace app\home\controller;
use app\common\BaseController;
 
class IndexController extends BaseController {
    return $a;
    // code
} 


创建成员方法

控制器类的成员方法访问权限必须为public,方法名为:方法名+Action。代码如下:


成员方法传参

一般通过url传入参数

function indexAction($a, $b){
    echo $a + $b;
}
// /home/index/index/1/2 输出:3
 
function indexAction($name){
    echo 'hello ' . $name;
}
// /home/index/index/world 输出: hello world  


传参时建议给一个默认值,防止报错

function indexAction($name = 'world'){
    echo 'hello, ' . $name;
}
// home 


/index/index 输出: hello world


防止注入攻击,可以给参数带上数据类型

function indexAction(int $id = 0){
    // code
} 


控制器的更多方法

控制器就是一个标准的php类,所以控制器支持php的特性,比如私有属性,私有方法,魔术方法

namespace app\home\controller;
use app\common\BaseController;
class IndexCtroller extends BaseController{
    private $name; //声明控制器的一个私有属性
    function __construct(){
    parent::__construct(); // 如果控制器有构造函数,就一定要调用父类的构造函数
    /*************
    控制器构造函数,主要用来在创建对象时初始化对象,控制器下所有成员方法都将执行此处代码
    **************/
    }
    function indexAction(){
        $this->setName('小明');
        $data['name'] = $this->name;
        $this->assign($data);
        //$this->assign('data',$data);
         $this->display();
     }
     private function setName($name){ //创建控制器的私有方法,无法通过URL访问。
         $this->name = $name;
     }
     function __call(){ //PHP类的魔术方法
         $this->content('走丢了');
     }
}