StartMVC开发手册

可以快速上手的开发文档

控制器

控制器定义

框架核心控制器Controller,位于/Startmvc/Core/Controller.php

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

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


控制器规范

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

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

控制器的命名空间为:App\模块\Controller(单模块为:App\Controller,所有首字母大写)。


创建控制器

// app/Home/Controller/IndexController.php
namespace App\Home\Controller;
use App\Common\BaseController;
 
class IndexController extends BaseController {
  // code
}

创建成员方法

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

namespace App\Home\Controller;
use App\Common\BaseController;

class IndexController extends BaseController {
 function indexAction(){
      // code
  }
}


成员方法传参

一般通过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->view();
  }
  private function setName($name){    //创建控制器的私有方法,无法通过URL访问。
     $this->name = $name;
  }
  function __call(){    //PHP类的魔术方法
    $this->content('走丢了');
  }
}

更新时间:2019-12-31 11:59:06