## 命名:
控制器名.class.php 例如: index.class.php
没有对名称的大小写做限制,因此要特别注意 Linux 下的大小写问题;**建议全部使用小写**
>[danger]注意控制器的命名空间和继承
<?php
namespace c; //命名空间是 c
use \z\controller; //导入controller类
class index extends controller{ //定义index控制器继承controller类
static function index(){ //index操作
echo '欢迎使用Z-php框架';
}
}
>[danger]2.0版本开始控制器的操作全部采用【**静态方法**】实现,全部控制器操作名均由 **static** 修饰
## url访问规则:
上面所示的控制器操作的url:/index.php?c=index&a=index
url中的参数 c 就是**控制器名**,a 就是**操作名**
控制器名和操作名是 index 的url中可以省略,因此 /index.php 实际访问的就是index控制器和index操作
## 分配变量和渲染模板
<?php
namespace c;
use \z\controller;
class index extends controller{
static function index(){
$str = '欢迎使用Z-php框架';
parent::assign('str',$str); //向模板文件分配$str变量
parent::display(); //渲染模板
}
}
## 视图中的方法:
parent::assign('a',$b); //将$b分配到模板中的变量$a中
parent::display('index'); //渲染当前模板目录下 index(当前控制器名)目录下的名为 index.html 的模板文件
parent::display(); //参数为空默认渲染 当前模板目录/控制器名/操作名.html文件
parent::fetch('index') //返回渲染index模板的字符串结果(不向浏览器输出)
parent::json($arr) //输出Json数据
## 跳转和重定向:
parent::success('操作成功'); //提示 操作成功(默认1秒后跳转到之前页面)
parent::success('操作成功','/index.php',2); //提示 操作成功,2秒钟后跳转到index.php
parent::error('操作失败'); //提示 操作失败(默认3秒后跳转到之前页面),参数2和参数3同success()
parent::redirect('/index.php'); //重定向到 /index.php
>[danger]success() 和 error() 自动判断当前的请求是否是Ajax请求,如果是Ajax请求则返回Json数据,格式如下:
{"status":成功是1失败为0, "info":"提示信息", "url":"跳转的url参数"}
**关于跳转的模板文件:**
优先使用 应用模板目录下的 mess.tpl 文件
默认使用 core/tpl/mess.tpl 文件
## 前置操作:
**如果控制器中存在 init() 方法,则先执行 init() 操作,之后再执行指定操作**
<?php
namespace c;
use \z\controller;
class common extends controller{
static function init(){ //先执行的操作
if(empty($_SESSION['user'])) parent::redirect('/index.php?c=login&a=index');
}
}
## 后置操作:
**如果控制器中存在 after() 方法,执行完指定操作后会接着执行 after() 操作**
<?php
namespace c;
use \z\controller;
class common extends controller{
static function after(){
//执行完控制器的指定操作之后 执行此操作(其前提是之前操作没有中断脚本)
}
}
>[danger]如果控制器操作直接 return 数据的话,则会直接输出Json数据并中断脚本
## _404方法
parent::_404('404.html'); //输出指定的404页面
如果参数为空 默认文件名是:404.html
如果参数不包含路径,优先输出当前模板目录下的404.html;其次是根目录下的404.html;最后是 /core/tpl/404.tpl
>[danger]非debug模式下:如果控制器类或方法不存在的时候直接输出404页面