製作自己的MVC框架(一) 簡單粗暴的實現

2021-09-20 15:13:14 字數 2035 閱讀 5227

現在市面上有很多成熟的mvc框架,可以拿來直接用,但自己造一下輪子其實也挺有意思的。

下面先來看個最簡單粗暴的mvc實現。

5個檔案就能實現最簡單的mvc,在apache中設定乙個虛擬目錄,配置個簡單網域名稱,就可以順利訪問了。

為了實現簡單,這裡沒有寫模型層。

這個檔案是入口檔案,所有的請求就將會先進入到這個檔案,然後再通過路由進入到不同的控制器中。

這就是常說的單一入口

1. 我簡單的將路由也放在了這個檔案中。

2. 還將乙個簡單的全域性常量放在了這裡。

));//

路由邏輯

if(empty($_get['c'])) else

3. 再是引入試圖的生成類和控制器類

4. 最終初始化這個控制器,就能實現訪問了。

//

初始化邏輯

require_once './view.php';//

試圖控制類

需要訪問的控制器,例如index控制器

$handler = new

$controller;//

初始化這個控制器,例如index

$handler->$action();//

執行方法,也就是最終訪問的那個地方

這樣就完成了一次簡單的訪問,下圖就是輸入了乙個簡單url,展示了view中的內容。

「.htaccess」是做路由用的,因為我用的伺服器軟體是apache,所以需要,如果是nginx就不需要。

這裡將url中的「index.php」乾掉了,不然訪問就需要多打這個,例如「index.php?c=index&a=action」。

這些引數具體的用法,可以上網自己查一下的。

rewriteengine on

rewritecond % !-d

rewritecond % !-f

rewriterule ^(.*)$ index.php/$1 [l]

市面上有很多模版引擎,很多都需要些學習成本。這裡我用了php自帶的output control

相關函式。

下面的**是「view.php」中的方法。

public

function fetch($template, array

$data =)

下面的**是「view/index.php」中的**,就僅僅是輸出乙個變數「$send」而已。

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>badge

title

>

head

>

<

body

>

<

strong

>

php echo $send

?>

strong

>

body

>

html

>

控制器在入口檔案「index.php」中初始化了一下,並且也引用了一下指定的方法。

裡面也沒有使用到什麼高大上的方法,就是在執行生成view的**。

//

一般都會繼承乙個通用的controller父類

class

index

}

這樣就實現了一次簡單mvc。

接下來會具體的做些邏輯的分層,新增一些通用的功能,路由,引入資料操作,配置檔案等。

製作自己的MVC框架(一) 簡單粗暴的實現

現在市面上有很多成熟的mvc框架,可以拿來直接用,但自己造一下輪子其實也挺有意思的。下面先來看個最簡單粗暴的mvc實現。5個檔案就能實現最簡單的mvc,在apache中設定乙個虛擬目錄,配置個簡單網域名稱,就可以順利訪問了。為了實現簡單,這裡沒有寫模型層。這個檔案是入口檔案,所有的請求就將會先進入到...

打造自己的MVC框架

打造自己mvc框架 1 mvc概念 model view controller 控制器 2 psr規範 psr1 基礎程式設計規範 psr2 編碼風格規範 psr3 日誌介面規範 psr4 自動載入規範 3 命名規範 檔名和類名相同 大駝峰原則 indexcontroller 命名空間名和資料夾名相...

自己構思的MVC框架

我除了是乙個很懶惰的人,更是乙個很吝嗇的人,更加是乙個不願被約束的人。在挑選開源表示層框架時,因為懶惰,我要求 1.好學,我不希望花乙個月的時間去學習如何配置 2.好用,要真的能夠提高開發的效率,而不是把自己繞進去 因為吝嗇,我要求 3.不要過於龐大,過多的依賴其他專案,占用過多的記憶體 4.執行效...