php打造屬於自己的MVC框架

2021-06-28 02:46:55 字數 2717 閱讀 4999

本篇先介紹一下php的mvc實現原理,我們框架的mvc部分也是基於此原理實現的,但是今天的**並不是框架內的**,僅僅為說明原理

一、檔案結構 

建立3個資料夾 

controller資料夾存放控制器檔案 

view資料夾存放視**件 

model資料夾存放資料檔案 

建立1個index.php 作為唯一入口 

二、控制器 

我們在controller資料夾下建立乙個democontroller.php檔案,檔案內容如下 

<?php 

class democontroller }

/* end of file democontroller.php */

這個檔案裡面我們只是建立了乙個名為democontroller的物件幷包含乙個index的方法,該方法輸出hello world。下面在index.php中執行democontroller中index方法。 

index.php的**如下 

<?php 

require('controller/democontroller.php');

$controller=new democontroller();

$controller->index();

/* end of file index.php */

執行index.php,ok如願我們看到了我們久違的hello world。這兩個檔案非常簡單,但也揭示了一點點mvc的本質,通過唯一入口執行我們要執行的控制器。當然controller部分應該是由uri來決定的,那麼我們來改寫一下index.php使他能通過uri來決定執行那個controller。 

index.php改寫**如下:

<?php 

$c_str=$_get['c'];

//獲取要執行的controller

$c_name=$c_str.'controller';

//按照約定url中獲取的controller名字不包含controller,此處補齊。

$c_path='controller/'.$c_name.'.php';

//按照約定controller檔案要建立在controller資料夾下,類名要與檔名相同,且檔名要全部小寫。

$method=$_get['a'];

//獲取要執行的action

require($c_path);

//載入controller檔案

$controller=new $c_name;

//例項化controller檔案

$controller->$method();

//執行該例項下的action

/* end of file index.php */

在瀏覽器中輸入http://localhost/index.php?c=demo&a=index,得到了我們的hello world。當然如果我們有其他的controller並且要執行它,只要修改url引數中的c和a的值就可以了。 

這裡有幾個問題要說明一下。 

一、php是動態語言,我們直接可以通過字串new出我們想要的物件和執行我們想要的方法,即上面的new $c_name,我們可以理解成new 'democontroller',因為$c_name本身的值就是'democontroller',當然直接new 'democontroller'這麼寫是不行的,其中的'democontroller'字串必須通過乙個變數來中轉一下。方法也是一樣的。 

二、我們在url中c的值是demo,也就是說$c_name 的值應該是democontroller呀,php不是區分大小寫嗎,這樣也能執行嗎?php區分大小寫這句話不完整,在php中只有變數(前面帶$的)和常量(define定義的)是區分大小寫的,而類名方,法名甚至一些關鍵字都是不區分大小寫的。而true,false,null等只能全部大寫或全部小寫。當然我們最好在實際編碼過程中區分大小寫。 

三、檢視 

我們在前面的controller中只是輸出了乙個「hello world」,並沒有達到mvc的效果,下面我將在此基礎上增加檢視功能,相信到這裡大家基本已經能想到如何新增檢視功能了。對,就是通過萬惡的require或者include來實現。 

首先我們在view資料夾下建立乙個index.php,隨便寫點什麼(呵呵,我寫的還是hello world)。之後我們改寫一下我們之前的democontroller。**如下: 

<?php 

class democontroller }

/* end of file democontroller.php */

再在瀏覽器中執行一下,看看是不是已經輸出了我們想要的內容了。 

接著我們通過controller向view傳遞一些資料看看,**如下: 

<?php 

class democontroller }

/* end of file democontroller.php */

view資料夾下index.php檔案**如下:

<?php

foreach ($data['list'] as $item)

?>

打造自己的MVC框架

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

打造自己的php框架

自己打造php框架,首先要對自己的框架定位,為什麼現在已經有這麼多非常成熟的框架而不用,要用自己的php框架。1 為了更快的開發效率 2 為了更高的執行效率 3 彰顯出自己的實力 一 框架流程 要想打造乙個自己的php框架還要了解框架的執行流程 入口檔案 定義常量 引入函式庫 自動載入類 啟動框架 ...

打造自己的php框架

最近總覺得用別人的框架這麼難受呢,所以在閒暇的時候就開始自己學習搭建自己的框架,我也是學習當中 一 框架的執行流程 1 入口檔案 所有的請求進入到入口檔案,然後進行分發 2 自動載入類 3 啟動框架 4 路由類 通過解析url,找到需要載入的控制器和方法 5 實現返回邏輯計算的結果 二 具體的操作流...