打造自己mvc框架
1、mvc概念
model view controller(控制器)
2、psr規範
psr1:基礎程式設計規範
psr2:編碼風格規範
psr3:日誌介面規範
psr4:自動載入規範
3、命名規範
檔名和類名相同(大駝峰原則)indexcontroller
命名空間名和資料夾名相同(全部小寫)
4、單一入口(簡單路由)
index.php?m=index&a=index
pathinfo index.php/index/index
spl_autoload_register(__autoload)
5、框架目錄架構
model usermodel.php
view
controller controller.php usercontroller.php
config config.php
vendor
libframework
srcmodel.php page.php tpl.php
public
css js fonts editor
cache 快取
6、命名空間對映
framework=>vendor/lib/framework/src
簡單的mvc框架
<?php
class psr4autoload
function autoload($classname)
}$psr=new psr4autoload();
//得到控制器名字和方法
$m=$_get['m'];
//完整的類名就是命名空間名在拼接類名
$classname='controller\\'.ucfirst(strtolower($m)).'controller';//首字母大寫,最後得到indexcontroller
//根據類名建立物件
$obj=new $classname();
//方法名
複雜的mvc框架,涉及到乙個命名空間和路徑的對映
<?php
include 'bootstrap/psr4autoload.php';
class psr4autoload
function autoload($classname)
protected function mapload($namespace,$realclass)
//處理路徑
$namespace=rtrim(str_replace('\\/','/',$namespace),'/').'/';
//拼接檔案全路徑
$filepath=$namespace.$realclass.'.php';
//將該檔案包含進來
if(file_exists($filepath))else
} function addmaps($namespace,$path)
$this->maps[$namespace]=$path;//將命名空間和路徑一鍵值對形式存放到陣列中 }}
$psr=new psr4autoload();
//從url中獲取要執行的那個控制器中的那個方法
$m=empty($_get['m'])?'index':$_get['m'];
$a=empty($_get['a'])?'index':$_get['a'];//從get引數中獲取,如果沒有預設都是index
$_get['m']=$m;
$_get['a']=$a;
$m=ucfirst(strtolower($m));
//拼接帶命名空鍵的類名
$controller='controller\\'.$m.'controller';
$obj=new $controller();
call_user_func([$obj,$a]);
?>
php打造屬於自己的MVC框架
本篇先介紹一下php的mvc實現原理,我們框架的mvc部分也是基於此原理實現的,但是今天的 並不是框架內的 僅僅為說明原理 一 檔案結構 建立3個資料夾 controller資料夾存放控制器檔案 view資料夾存放視 件 model資料夾存放資料檔案 建立1個index.php 作為唯一入口 二 控...
mvc 從0打造自己的框架
入口檔案 定義常量 引入函式庫 自動載入類 啟動框架 路由解析 載入控制器 返回結果 01先從入口檔案開始 1 定義常量,當前框架的根目錄核心檔案在的目錄專案在的目錄define mvc realpath define core mvc.core 2 載入函式庫3 啟動框架02 自動載入類 當我們n...
從0打造自己的mvc框架2
2 4載入控制器 判斷控制器是否存在如果不存在就給出乙個提醒,如果存在就顯示控制器裡的內容 class indexcontroller extends core imooc 效果顯示 2 5模型類 與資料庫建立連線 首先建立乙個model類 namespace core lib class mode...