1. 程式人生 > >用PHP開始你的MVC (一)整合你的站點入口

用PHP開始你的MVC (一)整合你的站點入口





這是一篇介紹如何用php來實現MVC模式開發的檔案。關於MVC模式的技術文章網上隨處可以,所以這篇檔案將不再講述這種模式的優缺點(實際

上是我說不清楚),子講他的php技術實現。並且在以後的系列文章中也是以講技術為主。

一、實現統一的網站入口(在MVC中呼叫Controler層的方法,也就是控制層)


大家也許經常在網上看到這樣的路徑(http://www.aaa.com/aaa/bbb/aaa?id=5),讓人不解,這樣的網站的實現方式有幾種可能性:
    1、隱藏檔案的副檔名,對這種做法的好處,眾說紛紜,不過個人覺得沒有必要;
    2、用了網站的重定向規則,實現虛擬路徑;
    3、強制檔案解析的方式,實現虛擬路徑。
用第2/3種方法可以實現網站的統一介面,合理的整合網站,更好的體現網站的安全性和架構,用這兩種方式的網站大多是使用“MVC”模式構

建和實現的。


下面是一個例子

訪問路徑如下:

      ....../test/*******/Bad
      ....../test/*******/Good
    (其中的"******"可以用任何字串替換,"......."是你的web路徑)

檔案的目錄結構如下
 |-- .htaccess
 |-- test
 |-- Application.php
 |-- Controler/GoodControler.php
 |-- Controler/BadControler.php

注意 檔案".htaccess",在windows下不能直接建立的,可以在命令列模式下建立.


檔案0:(.htaccess)(這個檔案是更改apache的配置方式用的)
<files test>
forcetype application/x-httpd-php
</files>

檔案1:(test.php)

<?php
/*-------------------------------------
 * test.php
 *
 * 作為你的網站的入口的檔案
 * 用來初始化和入口
 * 呼叫執行Controler的呼叫
 *
 -------------------------------------*/
require "Application.php";
$aa = new Application();
$aa->parse();
$aa->go();

?>

檔案2:(GoodControler.php)

<?php
/*-------------------------------------
 * GoodControler.php
 *
 * 用來控制 url=/test/Good 來的訪問
 *
 -------------------------------------*/
class GoodControler{
    /*
     * 控制類的呼叫方法,唯一的報漏給外部的介面
     */
    function control(){
     echo "this is from GoodControler url=*********/test/Good";
    }
}

?>

檔案3:(BadControler.php)

<?php
/*-------------------------------------
 * BadControler.php
 *
 * 用來控制 url=/test/Bad 來的訪問
 *
 -------------------------------------*/
class BadControler{
    /*
     * 控制類的呼叫方法,唯一的報漏給外部的介面
     */
    function control(){
     echo "this is from GoodControler url=*********/test/Bad";
    }
}

?>

檔案4:(Application.php)

<?php
/*-------------------------------------
 * Application.php
 *
 * 用來實現網站的統一入口,呼叫Controler類
 *
 -------------------------------------*/
class Application{
//用來記錄所要進行的操作
    var $action;
    //controler檔案的路徑名
    var $controlerFile;
    //controler的類名
    var $controlerClass;

function Application(){
    }

    function parse(){
        $this->_parsePath();
        $this->_getControlerFile();
        $this->_getControlerClassname();
    }
    /*
     * 解析當前的訪問路徑,得到要進行動作
     */
    function _parsePath(){
     list($path, $param) = explode("?", $_SERVER["REQUEST_URI"]);
        $pos = strrpos($path, "/");
        $this->action = substr($path, $pos+1);
    }
    /*
     * 通過動作$action,解析得到該$action要用到的controler檔案的路徑
     */
    function _getControlerFile(){
     $this->controlerFile = "./Controler/".$this->action."Controler.php";
        if(!file_exists($this->controlerFile))
         die("Controler檔名(".$this->controlerFile.")解析錯誤");
        require_once $this->controlerFile;
    }
    /*
     * 通過動作$action,解析得到該$action要用到的controler類名
     */
    function _getControlerClassname(){
        $this->controlerClass = $this->action."Controler";
        if(!class_exists($this->controlerClass))
         die("Controler類名(".$this->controlerClass.")解析錯誤");
    }
    /*
     * 呼叫controler,執行controler的動作
     */
    function go(){
        $c = new $this->controlerClass();
        $c->control();
    }
}

?>

相關推薦

PHP開始MVC ()整合站點入口

這是一篇介紹如何用php來實現MVC模式開發的檔案。關於MVC模式的技術文章網上隨處可以,所以這篇檔案將不再講述這種模式的優缺點(實際上是我說不清楚),子講他的php技術實現。並且在以後的系列文章中也是以講技術為主。一、實現統一的網站入口(在MVC中呼叫Controler層的方法,也就是控制層)大家也許經常在

PHP開始MVC(三)實現的Model層

三、實現你的Mode層Model層,就是MVC模式中的資料處理層,用來進行資料和商業邏輯的裝封,進行他的設計的時候設計到三個個概念:------Model類。是實體類。用來儲存資料庫表格的中一條記錄的所有欄位的資料。並且可以驗證這條記錄資料的完整性。------ModelMa

PHP開始MVC (四)實現View層

MVC模式的view層的主要任務是進行頁面的和結果的顯示工作,在php的實現過程中,主要是體現為一個模板(使用模板,可以達到php程式碼和html程式碼分離的目的,這樣程式碼和頁面的維護就方便多了,便於管理和頁面的更換,可以真正的劃分程式設計師、美工的分工)的解析過程:首先,

Java、C、C+ +、PHP、Python分別來開發什麼?篇文章告訴

我自己是一名大資料架構師,目前辭職在做線上教育大資料講師,每天都會直播分享免費公開課,大家可以加群參加。以及我自己整理了一套最新的大資料學習系統教程,包括Hadoop,資料探勘,資料分析。送給正在學習大資料的小夥伴!這裡是大資料學習者聚集地,歡迎初學和進階中的小夥伴!加QQ群:5849001

步教PHP+MySql搭建網站 No.0 準備工作

新開一個系列教程吧,這次是講如何用PHP+MySQL搭建網站。 之前一直有想過搭建自己的個人網站,然後上週通過阿里雲申請的域名和空間都通過稽核了,於是就開始研究如何用PHP+MYSQL搭建網站,研究了差不多兩週,總算搞定了一個小型的blog類的網站。當然,整個過程是通過學習

步教PHP+MySql搭建網站 No.1 主頁&資料庫連線

這一章節我們來看使用者輸入網頁後的主介面。 一般來說,預設主頁都是index點xxx,比如 index.php, index.html , index.jsp等等。我們來看一下我們的index.php吧 index.php 提醒: 在<?php?>的兩端,不要

次安裝多版本php的四個雷區,踩著了嗎

path start cgi 命令執行 mysq -c tool port 一鍵 記一次安裝多版本的php的四個雷區,你踩著了嗎 需求:公司需要在同一臺服務器上安裝不同版本的php,而這一臺的服務上已經安裝了php.7.1,現需要同

爬蟲高玩教Python每秒鐘下載張高清大圖,快不快?

on() print async tpc 多說 xxx ima 所有 mkdir 如果爬蟲需要展現速度,我覺得就是去下載圖片吧,原本是想選擇去煎蛋那裏下載圖片的,那裏的美女圖片都是高質量的,我稿子都是差不多寫好了的,無奈今天重新看下,妹子圖的入口給關了。 至於

一句話證明名程式設計師——燙燙燙燙湯湯湯湯湯

程式設計師的世界,給大家來普及下。當今最熱門的職業屬程式設計師莫屬。網際網路發展的迅速,市場的需求很大。薪資待遇高。儘管這樣,程式設計師也是很招黑的,說程式設計師禿頭悶騷修電腦的標配!黑歸黑,當真你就輸了! 如果用一句話證明你是一名程式設計師   來瞅瞅大眾網友怎麼說

小程式做生意

  微信連線了九億使用者,你在用微信,你的客戶也在用微信。        什麼是小程式?   無需下載即可使用的輕應用   實現商家與使用者“觸手可及”的夢想   只需要“掃一掃”或“搜一下”   體現“用完即走”的理念        為什麼要做小程

PHP到底有多牛?所知道的網站都在

  PHP到底有多牛?你所知道的網站都在用它   提起PHP,很多人的第一印象就是網站開發,確實,在網站開發方面,PHP難逢對手,當之無愧是“世界上最好的語言”。   有資料顯示,目前全球5000萬網際網路網站中,有60%以上使用著php技術,在國內,80%網際網路網站使用php開發。   不僅如此,人

富貴教PHP爬取掘金文章

前言 最近忙完了專案比較空就打算深入學習一些關於爬蟲的知識,以前讀書的時候就喜歡用爬蟲去爬一些學習網站(波多野**老師)。寫這篇部落格是想對之前學習的一些爬蟲知識做一個梳理和交流。希望有大佬指出不足,幫我成長。 新手村任務 下面這些是我2018年這半年業餘時間研究的一些小東西,比較適合剛

手把手教搭建與整合SSM框架(文末附原始碼)(Spring MVC + Spring + MyBatis)

目錄 1.匯入jar包 2.專案目錄總覽 3.配置Spring IoC容器 4.連線資料庫配置 5.整合mybatis環境 5.1配置對映器  5.2建立Mapper介面 5.3建立資料庫表和實體類 6.整合Spring MVC 6.1配置&nb

PHP常見面試題 PHP框架基礎-MVC框架基本工作原理】談談MVC的認識,介紹幾種目前比較流行的MVC框架。

一、考點 1、MVC工作原理 1)工作原理 Model - 資料模型層:通常情況下對資料進行加工,進行一些其他的處理,與資料相關的一些操作都在 Model層 操作。 View - 檢視層:跟使用者進行互動的一些介面上的東西。 Controller - 控制層

Oracle進階之可能會到的命令(

    不管你天天使用Oracle還是剛接觸Oracle,下面的這些命令或許在你忘記了的時候能幫忙快速找回來。 1. 檢視當前使用者    show user; 2. 去掉重複記錄的關鍵詞    di

一句話來形容名優秀的程式設計師,網友:神回覆!

還記得雙11期間,杭州一位快遞員凌晨在某小區投擲快遞,看到一位可疑的男子,十分邋遢,並且在電動車旁逗留,誤認為是小偷,兩人隨即發生撕扯,後來快遞員細問才知道,原來“小偷”只是剛加班回來的程式設計師。程式猿的程式碼是精準的,生活是隨意的,讓我們看看網友們是怎麼用一句話來形容自己是一名優秀的程式

讓我個經典小例子給捋 遞迴——記憶化搜尋——動態規劃 三者之間的關係

0 1 2 3 5 其實下面三個方法都是自下而上,只不過用遞迴的話,如果用二叉樹畫出遞迴的結構圖就會發現,出現了很多重複運算,比如說fib(100)=fib(99)+fib(98)。 記憶化搜尋通過新增一個列表容器來記錄已經計算過的內容,這樣就避免了重複運算,提高了效率,但是很明顯有空間換時

【孤雁是天的寂寞】生命那是場恢弘的等待,唯一的結局只是在那霏霏中睡去。就算全世界都否定要相信自己,當放下面子賺錢的時候,說明已經懂事了。當用錢賺回面子的時候,說明已經成功了。當你用面子可以賺錢的時候,

生命那是一場恢弘的等待,唯一的結局只是在那霏霏中睡去。就算全世界都否定你,你要相信你自己,當你放下面子賺錢的時候,說明你已經懂事了。當你用錢賺回面子的時候,說明你已經成功了。當你用面子可以賺錢的時候,...

怎麼php將微信與第三方平臺打通(建議使用測試號 【功能多】)

新建一個php檔案 寫上如下程式碼<?php echo $_GET["echostr"]; ?> 然後上傳到阿里雲主機 或其他都可以  最後就可以配置成功了下面這段程式碼 是安全驗證  相當於漏洞補丁驗證訊息的確來自微信伺服器private

手把手教matlab做深度學習()- --CNN

1.使用深度學習做目標檢測 上一篇部落格已經講解了怎麼用matlab匯入資料。 [trainingImages,trainingLabels,testImages,testLabels] = helperCIFAR10Data.load('cifar10Data');