97超碰在线播放|美女自慰免费观看|亚洲无码三四五区|日韩无码分类大全|日本美女在线99|毛片网女人免费看|亚洲国产香蕉av|久久免费看片视频|超碰在线无码一区|玖玖中文字幕在线

284292114@qq.com 中國站
新聞中心 網絡推廣 網站建設 優(yōu)化推廣 首頁>新聞中心>優(yōu)化推廣>教學視頻

慕課實戰(zhàn) 前端到后臺ThinkPHP開發(fā)整站

時間:2019-08-21   訪問量:0


手先感謝慕課網平臺能讓我有幸聽到大牛singwa老師的php課程,這套課程對我的php學習之路產生了很大的影響,由于文筆有限,還是分類討論。這一篇的話說一下關于如何理解MVC框架并去編寫類似于thinkphp結構的自己的框架!

整理思路為singwa老師課程+慕課老師pengcheng<<
MVC架構模式分析與設計>>所得出的心得。

關于MVC思想的理解:

singwa老師的課程是基于當前主流php框架"thinkPHP"所編寫的CMS文章管理系統(tǒng)。課程中嚴格利用MVC思想進行了編碼規(guī)范,讓學習的小伙伴對MVC思想能有一個很深的認識,對喜歡PHP的小伙伴入門進階很有幫助喲!
說到MVC 姑且將他們叫成 小M 小V 小C吧;

小C是一個協(xié)調能力很強的Girl,它的工作是經常和 小M 小V進行交流交互,當然由于她十分外向,所以也和瀏覽器用戶打成一片。
接受到瀏覽器用戶的指令 如果這個指令里要求小M也參一腳的話!小C就要開始和小M交流咯。此時小M時看管著數(shù)據(jù)庫的大門的,平時很喜歡小C,這個時候為了“愛情”他愿意打開數(shù)據(jù)庫的大門取出小C需要的東西(數(shù)據(jù)),然后小C很簡單粗暴的var_dump()一下(輸出數(shù)據(jù)庫的內容),就在這個時候,用戶覺得小M給小C的東西太赤裸裸了,不好看的!所以小C就想到了一個老友

小V,小V醉擅長穿搭了。她也很樂意幫助小C,就幫小C把從小M那里取到的“赤裸裸的數(shù)據(jù)”給美化了一下,然后送給了小C。此時小C把經過美化的“不再赤裸裸的數(shù)據(jù)”送給了用戶,用戶很滿意!

很不擅長講編這種故事,但是自己還是想嘗試一下,莫噴。
總之在一個建議的CMS系統(tǒng)中 C負責邏輯代碼處理 M負責數(shù)據(jù)庫的交互提取 V負責輸出到瀏覽器的模板操作。

關于PHP框架:

經過對課程的學習和研究,對PHP框架的一些基本原理也慢慢有了自己的認識。當然只是認識,可能還是會有錯誤的!在這里說幾個比較重要的點吧。

一、 如何做出一個這樣的URL鏈接:http://xxx.com/index.php?c=index&a=add

上面是一個典型的thinkphp所生成的url入口鏈接。那么m為模塊,c為控制器名稱,a為此控制器下的方法名稱。
那么怎么才能實現(xiàn)在這樣url形式呢?其實很簡單 用的就是我們經常用到的$_GET[] ,舉個栗子!按照上述的url形式的話 我們此時的$_GET[c] 就等于index,$_GET[a]就等于add,此時 我們就可以這樣去做:

1、創(chuàng)建一個indexcontroller.php (不一定非要這么寫 可以自己去規(guī)定)
2、打開創(chuàng)建的文件 寫上如下代碼:

   class indexController{
                public function add(){
                        echo "hello";
                }
    }

3、可見我們很簡單的創(chuàng)建了一個類和一個類里面的方法 類名為indexController 方法為 add 那么這個時候 我們正常情況下如果想執(zhí)行add方法我們會怎么做呢?說對了!實例化對象,然后 -> 箭頭戳方法就可以了!代碼如下:

$obj=new indexController;$obj->add();

4、好了,那么我們知道怎么去用常規(guī)方法去執(zhí)行這個類里的方法了,此時我們要做的就是框架化,把下面代碼寫入傳說中的入口文件 index.php(URL屁股后面帶參數(shù)的文件名 可以為任意文件名 自己改~)!代碼如下:

  if(isset($_GET['c']))&&isset($_GET['a']) ){
        //如果控制器C A 被設置了! 那么我們要做的是 包含這個控制器文件進來
        require(''..");//這里拼接的形式就是 :目錄/$_GET[c]."Controller.php";
        //文件已經包含進來了 那么可以實例化這個文件里的類并使用類里的方法了
        $obj= new $_GET[c]."Controller";
        $obj->$_GET['a']();
    }

5、經過上述四步 就能簡單的實現(xiàn)一個 訪問

http://xxx.com/index.php?c=index&a=add 就能輸出一個 hello

6、既然是這樣的話 我們何不在add方法里也寫一條代碼呢?這樣就可以簡單的實現(xiàn)V層了。太簡單了 require("xx.html");搞定!

【PS:上面的純粹是在慕課的編輯器里手打的,沒有經過測試,只是一個小思路!具體還要對get到的值進行各種字符處理,對入口文件里寫的代碼進行進一步封裝就是后面優(yōu)化的事情啦!】

二、實現(xiàn)M層

大家都知道M層是用來進行數(shù)據(jù)庫操作的,其實他的實現(xiàn)方法和C差不多。只不過和C干的事情不一樣而已。還是舉個栗子!

1、創(chuàng)建一個NewsModel.php (不一定非要這么寫 可以自己去規(guī)定)
3、封裝數(shù)據(jù)庫的基本操作類 DB.class.php 增刪改查 根據(jù)ID更 改 查 刪.. 根據(jù) XX更改查刪【這里就不細寫了,懶】
2、打開創(chuàng)建的文件 寫上如下代碼:
require("DB.class.php");//包含數(shù)據(jù)庫操作類 這個可以寫在入口文件喲。這里為了理解就先包含在這里啦!

class NewsModel{
            $_db="";
            //下面多了一個構造函數(shù) 也就是在實例化的時候,自動執(zhí)行構造函里的方法!構建一個數(shù)據(jù)庫 操作對象。
            public function __contruct(){
                    $this->_db=new DB; //實例化一個數(shù)據(jù)庫操作對象!可以開始大肆的操作數(shù)據(jù)庫了!
            }
            public function add(){
                   $this->_db->add(); //比如DB類里有一個add方法!這里就可以調用到啦!接下來的事情你懂得!
            }
}

3、和控制器曾實現(xiàn)一樣!實例化對象,然后 -> 箭頭戳方法就可以了!代碼如下:

$obj=new NewsModel;$obj->add();

4、好了,那么我們怎么去在C里去執(zhí)行M的方法呢?還是很簡單啦!此時我們要封裝一個函數(shù) 姑且稱為 D 即

   function D($name){
        require_once('目錄/'.$name.'Model.php');
        $obj = 'new'.$name.'Model()'; //不知道拼接的是否正確 就是實例化一個model對象       
        return $obj; //返回此對象
    }

5、好了 那么接下來 我們也在 C里執(zhí)行M的方法了!怎么做呢?比如執(zhí)行的是NewsModel下的方法!

  $obj=D("News");
    D("News")->add(); //這里跳躍性有點 大家往上拉看看newsModel這個類就明白了!??!

6、就這樣 小C終于了小M勾結在了一起!

從實戰(zhàn)課程中 學到的當然不止這些,當然這些也是比較基礎的東西,但是自己一個字一個字敲出來我覺得還是蠻有意義的!除了關于建設自己的php框架和mvc思想的理解外,從課程中還學到了很多web JS操作的技巧。并且對ajax異步請求有了更深層次的了解。感謝singwa老師,感謝慕課網。寫完罷工!繼續(xù)去碼代碼看課程咯!



鏈接: https://pan.baidu.com/s/1DO74hGs2ia0g5qTelMQ3VA 提取碼: pgjp 復制這段內容后打開百度網盤手機App,操作更方便哦

服務咨詢
1對1咨詢,專業(yè)客服為您解疑答惑
聯(lián)系銷售
15899750475
在線咨詢
聯(lián)系在線客服,為您解答所有的疑問
ARE YOU INTERESTED IN ?
感興趣嗎?

有關我們服務的更多信息,請聯(lián)系項目經理

15899750475 楊先生