成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

hiYoHoo / 1995人閱讀

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

  

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


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


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


回顧

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

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


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

新建 MFFC/app 文件夾,在 app 中創(chuàng)建 controllers、modelsviews 三個(gè)文件夾,開始正式開始踏上 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 類?因?yàn)槲覀儧]有讓他自動(dòng)加載,修改 composer.json 為:

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

運(yùn)行 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 文件:



刷新,這時(shí)候會(huì)得到 Article 類未找到的信息,因?yàn)槲覀儧]有更新自動(dòng)加載配置:

composer dump-autoload

在等待的時(shí)間里,我們?nèi)ソ?shù)據(jù)庫 mffc,在里面建立表 articles,設(shè)計(jì)兩個(gè)字段 title、content 用于記錄信息,并填充進(jìn)至少一條數(shù)據(jù)。你也可以在建立完成 mffc 數(shù)據(jù)庫以后運(yùn)行以下 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,"我是標(biāo)題","

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

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

"), (2,"我是標(biāo)題","

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

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

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

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

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


調(diào)用視圖

修改 models/Article.php 為:



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



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


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

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

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

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

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    gougoujiang 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<