摘要:所以接下来我们要做的事情就是让框架更加规范,更加丰满。正式开始规划文件夹新建文件夹,在中创建三个文件夹,开始正式开始踏上的征程。调用视图修改为将包含查询结果的数组返回。下一步利用一步一步构建自己的框架四使用
终于可以 “一次编写,到处发布” 了,泪流满面!
今天凌晨我从一点多开始搞了四个小时到 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
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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