浅墨小站

No mountain too high, no ocean too deep.

【开发日记】风信子PHP用户注册登录系统开发实录(二)——手撸MVC框架

又是一段时间没有咕这个了,继续来搞 Hyacinth 吧~
如题,这次浅墨想要尝试自建一个简单的 MVC 框架(我相信 MVC 是什么就不需要介绍了),来完成风信子整个系统的制作。

为什么使用 MVC

很多框架都是 MVC 设计的, MVC 在 Web 开发中是比较流行的了,而且 MVC 可以适应大量的情况。浅墨认为 MVC 设计模式足以应对该使用场景,但是现有的 MVC 框架的功能都比较多,相对于风信子这种简单的应用来说太过臃肿,而且自建 MVC 框架可以方便自己日后的更新维护。同时浅墨希望通过开发风信子,学习 MVC 的内部原理,让自己对 PHP 开发有更加深入的理解。

MVC 的工作流程解析

1、首先,有一个单一的入口文件,所有的请求都被重定向到这个入口文件中;
2、然后,预加载一些配置的常量,并且加载我们的函数库和其他的第三方库(在这里可能不会用到第三方库);
3、自动加载一些类和其他的文件;
4、路由类分析 URL ,并且根据分析结果调用对应的控制器和方法;
5、控制器调用模型进行处理,最终返回视图。

目录结构

如图:
《【开发日记】风信子PHP用户注册登录系统开发实录(二)——手撸MVC框架》

URL重写和入口文件

为什么要使用 URL 重写?因为要实现单一入口。
我们的服务器使用的是 Apache httpd ,所以 URL 重写可以在 .htaccess 文件中完成,由于本文并非教程文章,只是分享浅墨设计时的一些思路,而且代码与其他的教程文章的大同小异,所以这里就不堆代码了。
那么入口文件就是主目录下的 index.php 文件了,它将被用于定义一些宏(全局常量),启动框架核心。

框架核心

框架核心分为:核心文件 Core.php ,路由文件 Router.php ,Controller基类 Controller.php ,View基类 View.php ,Sql操作类(也是 Model.php 的基类) Sql.php ,Model基类 Model.php
它们的调用和功能是这样的:
核心文件被入口文件调用,然后对请求的所有内容进行安全性转义(防止 Sql 注入等),然后注销全局变量,之后调用路由文件分析 URL ,再引入并调用对应的 Controller ,最后 Controller 和 Model 完成处理逻辑, Controller 调用 View 进行渲染。

然后,也不知道要说些什么了,这方面似乎没有什么可说的了,那就~

未完待续。。。

点赞
  1. 惡魔.说道:

    大佬呐,你的网站中某些页面好像被360警告啦2333~特地来通知一番,我是从一些博主的友链页面过来的鸭!
    最后,欢迎互访哦!

    1. Romonov说道:

      对于360的话,浅墨是不打算处理的,另外看上去你的站好像访问不了呢。

  2. 惡魔.说道:

    啊呜,大佬不打算处理360呢,也无妨~
    咱的链接已经更新,不过在Gravatar的资料里还没有修改,所以才访问不了。
    现在已经更改,如果还是没有正确地址的话乃可以点击:https://meowqvq.wordpress.com/
    祝君好运~

    1. Romonov说道:

      哇,看了您的博客,是个大佬呢,要不要交换友链呀~(本站已添加贵站友链,在https://www.romonov.com/dalao_link/)

      1. 惡魔.说道:

        好哇好哇(๑‾ ꇴ ‾๑)~那么我也去添加友链了喵!

  3. 惡魔.说道:

    呐,原来如此。
    咱的链接在Gravatar还未更新,新地址是:https://meowqvq.wordpress.com/
    祝君好运(≧∇≦)ノ~

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

%d 博主赞过: