国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用 Composer 一步一步構(gòu)建自己的 PHP 框架(三)——設(shè)計 MVC

hiYoHoo / 1989人閱讀

摘要:所以接下來我們要做的事情就是讓框架更加規(guī)范,更加豐滿。正式開始規(guī)劃文件夾新建文件夾,在中創(chuàng)建三個文件夾,開始正式開始踏上的征程。調(diào)用視圖修改為將包含查詢結(jié)果的數(shù)組返回。下一步利用一步一步構(gòu)建自己的框架四使用

  

終于可以 “一次編寫,到處發(fā)布” 了,淚流滿面!
今天凌晨我從一點多開始搞了四個小時到 5:20,終于搞出了個 Emlog 的 MarkDown 插件!歡迎 Emloger 嘗試!


原文發(fā)表在我的個人網(wǎng)站:利用 Composer 一步一步構(gòu)建自己的 PHP 框架(三)——設(shè)計 MVC


本教程示例代碼見 https://github.com/johnlui/My-First-Framework-based-on-Composer


回顧

在上一篇教程中,我們使用 codingbean/macaw 這個 Composer 包構(gòu)建了兩條簡單路由,第一條是響應(yīng) GET ‘/fuck’ 的,另一條會 hold 住所有請求。其實對 PHP 框架來說,有了路由就有了一切。所以接下來我們要做的事情就是讓 MFFC 框架更加規(guī)范,更加豐滿。

這就牽扯到了 PHP 框架另外的價值:確立開發(fā)規(guī)范以便于多人協(xié)作,使用 ORM模板引擎 等工具以提高開發(fā)效率。


正式開始 規(guī)劃文件夾

新建 MFFC/app 文件夾,在 app 中創(chuàng)建 controllers、models、views 三個文件夾,開始正式開始踏上 MVC 的征程。
(誰說我抄 Laravel 了,我抄的明明是 Rails :-D)

使用命名空間

新建 controllers/BaseController.php 文件:



新建 controllers/HomeController.php 文件:

控制器成功!

";
  }
}

增加一條路由: Macaw::get("", "HomeController@home");,打開瀏覽器直接訪問 http://127.0.0.1:81/,出現(xiàn)以下提示:

Fatal error: Class "HomeController" not found in /Library/WebServer/Documents/wwwroot/MFFC/vendor/codingbean/macaw/Macaw.php on line 93

為什么沒找到 HomeController 類?因為我們沒有讓他自動加載,修改 composer.json 為:

{
  "require": {
    "codingbean/macaw": "dev-master"
  },
  "autoload": {
    "classmap": [
      "app/controllers",
      "app/models"
    ]
  }
}

運行 composer dump-autoload,稍等片刻,刷新,你將看到以下內(nèi)容(別忘了調(diào)節(jié)編碼哦~):

恭喜你,命名空間使用成功!

連接數(shù)據(jù)庫

新建 models/Article.php 文件,內(nèi)容為(數(shù)據(jù)庫密碼請自行更改):

".$row["title"]."";
      echo "

".$row["content"]."

"; } mysql_close($connection); } }

修改 controllers/HomeController.php 文件:



刷新,這時候會得到 Article 類未找到的信息,因為我們沒有更新自動加載配置:

composer dump-autoload

在等待的時間里,我們?nèi)ソ?shù)據(jù)庫 mffc,在里面建立表 articles,設(shè)計兩個字段 titlecontent 用于記錄信息,并填充進至少一條數(shù)據(jù)。你也可以在建立完成 mffc 數(shù)據(jù)庫以后運行以下 SQL 語句:

DROP TABLE IF EXISTS `articles`;

CREATE TABLE `articles` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `content` longtext,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

LOCK TABLES `articles` WRITE;
/*!40000 ALTER TABLE `articles` DISABLE KEYS */;

INSERT INTO `articles` (`id`, `title`, `content`)
VALUES
    (1,"我是標題","

我是內(nèi)容呀~~

我真的是內(nèi)容,不信算了,哼~ O(∩_∩)O

"), (2,"我是標題","

我是內(nèi)容呀~~

我真的是內(nèi)容,不信算了,哼~ O(∩_∩)O

"); /*!40000 ALTER TABLE `articles` ENABLE KEYS */; UNLOCK TABLES;

然后,刷新!你將看到以下頁面:

恭喜你!MVC 中的 M 和 C 都已經(jīng)實現(xiàn)!接下來我們開始調(diào)用 V (視圖)。


調(diào)用視圖

修改 models/Article.php 為:



將包含查詢結(jié)果的數(shù)組返回。修改 HomeController:



保存,刷新,你將得到跟上面一模一樣的頁面,視圖調(diào)用成功!


幾乎所有人都是通過學(xué)習(xí)某個框架來了解 MVC 的,這樣可能框架用的很熟,一旦離了框架一個簡單的頁面都寫不了,更不要說自己設(shè)計 MVC 架構(gòu)了,其實這里面也沒有那么多門道,原理非常清晰,我說說我的感悟:

PHP 框架再牛逼,他也是 PHP,也要遵循 PHP 的運行原理和基本哲學(xué)。抓住這一點我們就能很容易地理解很多事情。

PHP 做的網(wǎng)站從邏輯上說,跟 php test.php 沒有任何區(qū)別,都只是一段字符串作為參數(shù)傳遞給 PHP 解釋器而已。無非就是復(fù)雜的網(wǎng)站會根據(jù) URL 來調(diào)用需要運行的文件和代碼,然后返回相應(yīng)的結(jié)果。

無論我們看到的是 CodeIgniter 這樣 180 個文件組成的“小框架”,還是 Laravel 這樣加上 vendor 一共 3700 多個文件的 “大框架”,他們都會在每一個 URL 的驅(qū)動下,組裝一段可以運行的字符串,傳給 PHP 解釋器,再把從 PHP 解釋器返回的字符串傳給訪客的瀏覽器。

MVC 是一種邏輯架構(gòu),本質(zhì)上是為了讓人腦這樣的超低 RAM 的計算機能夠制造出遠超人腦 RAM 的大型軟件,其實 MVC 架構(gòu)在 GUI 軟件出現(xiàn)以前就已經(jīng)成形,命令行輸出也是視圖嘛。

在 MFFC 里,一個 URL 驅(qū)動框架做的事情基本是這樣的:入口文件 require 控制器,控制器 require 模型,模型和數(shù)據(jù)庫交互得到數(shù)據(jù)返回給控制器,控制器再 require 視圖,把數(shù)據(jù)填充進視圖,返回給訪客,流程結(jié)束。

下一步:利用 Composer 一步一步構(gòu)建自己的 PHP 框架(四)——使用 ORM

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31877.html

相關(guān)文章

  • 利用 Composer 步一構(gòu)建自己 PHP 框架(四)——使用 ORM

    摘要:引入了命名空間,這是規(guī)劃在中的功能,所以在一定程度上其實就是,的下一個版本是,即將發(fā)布,主要貢獻者是大名鼎鼎的鳥哥。使用修改為自動載入路由配置新增注意替換數(shù)據(jù)庫密碼修改無需改動。作者接受采訪時曾表示,是整個中最難實現(xiàn)的部分。 原文發(fā)表在我的個人網(wǎng)站:利用 Composer 一步一步構(gòu)建自己的 PHP 框架(四)——使用 ORM 本教程示例代碼見 https://github.com...

    FreeZinG 評論0 收藏0
  • 利用 Composer 步一構(gòu)建自己 PHP 框架(二)——構(gòu)建路由

    摘要:原文發(fā)表在我的個人網(wǎng)站利用一步一步構(gòu)建自己的框架二構(gòu)建路由本教程示例代碼見上一篇中我們已經(jīng)建立了一個空的項目,本篇將講述如何構(gòu)建路由。從使用框架是為了提高開發(fā)效率的角度來看,框架的本質(zhì)就是路由。下一步利用一步一步構(gòu)建自己的框架三設(shè)計 原文發(fā)表在我的個人網(wǎng)站 利用 Composer 一步一步構(gòu)建自己的 PHP 框架(二)——構(gòu)建路由 本教程示例代碼見 https://github.c...

    lentrue 評論0 收藏0
  • 利用 Composer 完善自己 PHP 框架(一)——視圖裝載

    摘要:我們先從目前用著最不爽的地方視圖裝載下手。實現(xiàn)裝載器完成基礎(chǔ)準備以后我們正式開始制造視圖裝載器。下一步利用完善自己的框架二發(fā)送郵件 原文發(fā)表在我的個人網(wǎng)站:利用 Composer 完善自己的 PHP 框架(一)——視圖裝載 本教程示例代碼見 https://github.com/johnlui/My-First-Framework-based-on-Composer 回顧 經(jīng)...

    LinkedME2016 評論0 收藏0
  • 利用 Composer 步一構(gòu)建自己 PHP 框架(一)——基礎(chǔ)準備

    摘要:原文發(fā)表在我的個人網(wǎng)站利用一步一步構(gòu)建自己的框架一基礎(chǔ)準備一統(tǒng)天下的時代已經(jīng)到來白巖松一個時代結(jié)束了另一個時代開始了??蚣芸苫ビ眯孕〗M,簡稱,成立于年。 原文發(fā)表在我的個人網(wǎng)站 利用 Composer 一步一步構(gòu)建自己的 PHP 框架(一)——基礎(chǔ)準備 『Composer 一統(tǒng)天下的時代已經(jīng)到來!』 ——白巖松 一個時代結(jié)束了,另一個時代開始了。 Framework ...

    gougoujiang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<