打造自己的MVC框架

2021-08-07 07:42:04 字數 2226 閱讀 9404

打造自己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...