摘要:所以接下來我們要做的事情就是讓框架更加規范,更加豐滿。正式開始規劃文件夾新建文件夾,在中創建三個文件夾,開始正式開始踏上的征程。調用視圖修改為將包含查詢結果的數組返回。下一步利用一步一步構建自己的框架四使用
終于可以 “一次編寫,到處發布” 了,淚流滿面!
今天凌晨我從一點多開始搞了四個小時到 5:20,終于搞出了個 Emlog 的 MarkDown 插件!歡迎 Emloger 嘗試!
原文發表在我的個人網站:利用 Composer 一步一步構建自己的 PHP 框架(三)——設計 MVC
本教程示例代碼見 https://github.com/johnlui/My-First-Framework-based-on-Composer
在上一篇教程中,我們使用 codingbean/macaw 這個 Composer 包構建了兩條簡單路由,第一條是響應 GET ‘/fuck’ 的,另一條會 hold 住所有請求。其實對 PHP 框架來說,有了路由就有了一切。所以接下來我們要做的事情就是讓 MFFC 框架更加規范,更加豐滿。
這就牽扯到了 PHP 框架另外的價值:確立開發規范以便于多人協作,使用 ORM、模板引擎 等工具以提高開發效率。
新建 MFFC/app 文件夾,在 app 中創建 controllers、models、views 三個文件夾,開始正式開始踏上 MVC 的征程。
(誰說我抄 Laravel 了,我抄的明明是 Rails :-D)
新建 controllers/BaseController.php 文件:
新建 controllers/HomeController.php 文件:
控制器成功! "; } }增加一條路由: Macaw::get("", "HomeController@home");,打開瀏覽器直接訪問 http://127.0.0.1:81/,出現以下提示:
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,稍等片刻,刷新,你將看到以下內容(別忘了調節編碼哦~):
恭喜你,命名空間使用成功!
連接數據庫新建 models/Article.php 文件,內容為(數據庫密碼請自行更改):
".$row["title"].""; echo "".$row["content"]."
"; } mysql_close($connection); } }修改 controllers/HomeController.php 文件:
刷新,這時候會得到 Article 類未找到的信息,因為我們沒有更新自動加載配置:
composer dump-autoload
在等待的時間里,我們去建立數據庫 mffc,在里面建立表 articles,設計兩個字段 title、content 用于記錄信息,并填充進至少一條數據。你也可以在建立完成 mffc 數據庫以后運行以下 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,"我是標題","我是內容呀~~
我真的是內容,不信算了,哼~ O(∩_∩)O
"), (2,"我是標題","我是內容呀~~
我真的是內容,不信算了,哼~ O(∩_∩)O
"); /*!40000 ALTER TABLE `articles` ENABLE KEYS */; UNLOCK TABLES;然后,刷新!你將看到以下頁面:
恭喜你!MVC 中的 M 和 C 都已經實現!接下來我們開始調用 V (視圖)。
調用視圖修改 models/Article.php 為:
將包含查詢結果的數組返回。修改 HomeController:
保存,刷新,你將得到跟上面一模一樣的頁面,視圖調用成功!
幾乎所有人都是通過學習某個框架來了解 MVC 的,這樣可能框架用的很熟,一旦離了框架一個簡單的頁面都寫不了,更不要說自己設計 MVC 架構了,其實這里面也沒有那么多門道,原理非常清晰,我說說我的感悟:
PHP 框架再牛逼,他也是 PHP,也要遵循 PHP 的運行原理和基本哲學。抓住這一點我們就能很容易地理解很多事情。
PHP 做的網站從邏輯上說,跟 php test.php 沒有任何區別,都只是一段字符串作為參數傳遞給 PHP 解釋器而已。無非就是復雜的網站會根據 URL 來調用需要運行的文件和代碼,然后返回相應的結果。
無論我們看到的是 CodeIgniter 這樣 180 個文件組成的“小框架”,還是 Laravel 這樣加上 vendor 一共 3700 多個文件的 “大框架”,他們都會在每一個 URL 的驅動下,組裝一段可以運行的字符串,傳給 PHP 解釋器,再把從 PHP 解釋器返回的字符串傳給訪客的瀏覽器。
MVC 是一種邏輯架構,本質上是為了讓人腦這樣的超低 RAM 的計算機能夠制造出遠超人腦 RAM 的大型軟件,其實 MVC 架構在 GUI 軟件出現以前就已經成形,命令行輸出也是視圖嘛。
在 MFFC 里,一個 URL 驅動框架做的事情基本是這樣的:入口文件 require 控制器,控制器 require 模型,模型和數據庫交互得到數據返回給控制器,控制器再 require 視圖,把數據填充進視圖,返回給訪客,流程結束。
下一步:利用 Composer 一步一步構建自己的 PHP 框架(四)——使用 ORM
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31877.html
摘要:引入了命名空間,這是規劃在中的功能,所以在一定程度上其實就是,的下一個版本是,即將發布,主要貢獻者是大名鼎鼎的鳥哥。使用修改為自動載入路由配置新增注意替換數據庫密碼修改無需改動。作者接受采訪時曾表示,是整個中最難實現的部分。 原文發表在我的個人網站:利用 Composer 一步一步構建自己的 PHP 框架(四)——使用 ORM 本教程示例代碼見 https://github.com...
摘要:原文發表在我的個人網站利用一步一步構建自己的框架二構建路由本教程示例代碼見上一篇中我們已經建立了一個空的項目,本篇將講述如何構建路由。從使用框架是為了提高開發效率的角度來看,框架的本質就是路由。下一步利用一步一步構建自己的框架三設計 原文發表在我的個人網站 利用 Composer 一步一步構建自己的 PHP 框架(二)——構建路由 本教程示例代碼見 https://github.c...
摘要:我們先從目前用著最不爽的地方視圖裝載下手。實現裝載器完成基礎準備以后我們正式開始制造視圖裝載器。下一步利用完善自己的框架二發送郵件 原文發表在我的個人網站:利用 Composer 完善自己的 PHP 框架(一)——視圖裝載 本教程示例代碼見 https://github.com/johnlui/My-First-Framework-based-on-Composer 回顧 經...
摘要:原文發表在我的個人網站利用一步一步構建自己的框架一基礎準備一統天下的時代已經到來白巖松一個時代結束了另一個時代開始了。框架可互用性小組,簡稱,成立于年。 原文發表在我的個人網站 利用 Composer 一步一步構建自己的 PHP 框架(一)——基礎準備 『Composer 一統天下的時代已經到來!』 ——白巖松 一個時代結束了,另一個時代開始了。 Framework ...
閱讀 1457·2021-11-22 13:52
閱讀 1281·2021-09-29 09:34
閱讀 2690·2021-09-09 11:40
閱讀 3030·2019-08-30 15:54
閱讀 1255·2019-08-30 15:53
閱讀 971·2019-08-30 11:01
閱讀 1354·2019-08-29 17:22
閱讀 1942·2019-08-26 10:57