## 命名:
控制器名.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頁面