如何寫一個自己的渣渣PHP框架(4)
已經建立了 IndexController 並且這個時候也可以根據不同的 url 來訪問不同控制器的不同方法...
現在加一個控制器的基類,Controller 在/data/momoma/core下建立一個目錄 controller 並且在該目錄下建立一個類 BaseController.php
<?php
/**
* Created by PhpStorm.
* User: momoma
* Date: 2017/3/8
* Time: 下午4:22
*/
namespace core\controller;
class BaseController {
/**
* 控制器 重定向
* @param string $url 跳轉的URL路徑
* @param int $time 多少秒後跳轉
*/
public function redirect($url, $time = 0) {
if (!headers_sent()) {
if ($time === 0) header("Location: ".$url);
header("refresh:" . $time . ";url=" .$url. "");
} else {
exit("<meta http-equiv='Refresh' content='" . $time . ";URL=" .$url. "'>");
}
}
/**
* 資料基礎驗證-是否是Email 驗證:xxx@qq.com
* Controller中使用方法:$this->is_email($value)
* @param string $value 需要驗證的值
* @return bool
*/
public function is_email($value) {
return preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', trim($value));
}
}
這個基類可以做什麼?
你所有的業務層上的 controller 所要繼承的功能都可以寫,你也可以在 /data/momoma/core/controller/ 這個目錄裡建立若干類,依次繼承。功能比如 redirect,is_email 驗證 email 當然你可以寫很多的東西,或者接收引數並且過濾:
/**
* 獲取引數 如果是GET $type == 'G'
* @param $value
* @param $type
* @return string
*/
public function getParams($value,$type) {
if($type == 'G') {
return $this->filter_str($_GET[$value]);
} elseif($type == 'P') {
return $this->filter_str($_POST[$value]);
}
}
/**
* 安全過濾類-字串過濾 過濾特殊有危害字元
* Controller中使用方法:$this->controller->filter_str($value)
* @param string $value 需要過濾的值
* @return string
*/
public function filter_str($value) {
$value = str_replace(array("\0","%00","\r"), '', $value);
$value = preg_replace(array('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','/&(?!(#[0-9]+|[a-z]+);)/is'), array('', '&'), $value);
$value = str_replace(array("%3C",'<'), '<', $value);
$value = str_replace(array("%3E",'>'), '>', $value);
$value = str_replace(array('"',"'","\t",' '), array('"',''',' ',' '), $value);
return $value;
}
然後你的業務層的控制器,比如你上次建立的檔案 IndexController 或者你將來要建立的各種 ArticleController AdminController 等等。
你就可以這樣使用,首先繼承 BaseController
/**
* Index控制器
* User: momoma
* Date: 2017/1/23
* Time: 下午3:44
*/
namespace controller;
use core\controller\BaseController;
class IndexController extends BaseController {
public function run(){
echo "我是 Index 制器的 run 方法";
// 接收引數
$username = $this->getParams('name','G');
$password = $this->getParams('pwd','P');
$email = $this->getParams('email','P');
// 驗證郵箱
if (!$this->is_email($email)){
echo "郵箱格式不正確";
}
// 重定向
$this->redirect('/index.php?c=demo');
}
public function demo(){
echo "我是 Index 制器的 demo 方法";
}
}
控制器的基類完成了,然後就可以寫view層了...
下一篇寫...
相關文章
- 後續:“渣渣輝”難擋成群“渣渣灰”
- 一個學渣的阿里之路阿里
- 想跑路了有需要的聯絡我這個渣渣
- Linux新手渣渣上路史Linux
- 渣渣二本的辛酸面試之路面試
- 使用Python建立一個系統監控程式--李渣渣(lizaza.cn)Python
- excel江湖異聞錄--渣渣Excel
- 前端渣渣對requestAPI的不斷重構之路前端API
- 【渣渣程式設計師我不是DBA】MySQL的Explain記錄一下程式設計師MySqlAI
- 匈牙利演算法——海王們的渣男渣女行為演算法
- 不懂OFFICE的學渣
- js拖拽原理及簡單實現(渣渣自學)JS
- 【面試】三年渣渣前端面試總結面試前端
- 一個「學渣」從零Web前端自學之路Web前端
- 遊戲出海日本怎麼成功借用“渣渣輝們”的東風?遊戲
- 自己寫一個mvc框架吧(一)MVC框架
- Flask搭建個人部落格網站(1)—專案規劃--李渣渣(lizaza.cn)Flask網站
- 從渣渣輝到謝霆鋒,揭祕貪玩的傳奇套路
- 一個大三學渣的最後一年掙扎(前端)前端
- 你有認真瞭解過自己的“Java物件”嗎? 渣男Java物件
- 菜渣開源一個基於 EMIT 的 AOP 庫(.NET Core)MIT
- 一個「學渣」從零開始的Web前端自學之路Web前端
- 感謝 Vue.js 拯救我這個前端渣渣,讓 PowerJob 有了管理後臺介面Vue.js前端
- 自己寫一個mvc框架吧(五)MVC框架
- 自己寫一個mvc框架吧(四)MVC框架
- 自己寫一個mvc框架吧(二)MVC框架
- 自己寫一個mvc框架吧(三)MVC框架
- 渣本的春招修仙之路
- 泰坦尼克號生存預測邏輯迴歸,kaggle渣渣排名邏輯迴歸
- 面試:一個單例模式,足以把你秒成渣面試單例模式
- 一個渣碩iOS春招總結 | 掘金技術徵文iOS
- 自己動手寫一個持久層框架框架
- 自己手寫一個SpringMVC框架(簡化)SpringMVC框架
- 一個雙非渣本的春招求職路 | 掘金技術徵文求職
- 《我是渣渣輝》新版遊戲正式上架Win10系統商店遊戲Win10
- 迷宮闖關廣告背後的手遊 與“渣渣輝”們是啥關係?
- 《貪玩藍月》開發商成立杭州渣渣灰網路科技有限公司
- 前端戰五渣學JavaScript——Promise前端JavaScriptPromise
- 前端戰五渣學JavaScript——閉包前端JavaScript