php去写mvc,PHP手写MVC(一)—— MVC 简介

受到两位大佬的影响 @章亦春 @仁风,决定写一个简单的MVC源码,争取在年前写完分享给大家。

MVC 简介

MVC 是 Model-View-Controller 的简称,用一种业务逻辑、数据、页面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,与用户交互的页面可以不受业务逻辑限制,可随时更改和切换。

8d52b98e5ee575701d59c27633f6071c.png

上图是一个 MVC 框架处理请求的流程,Controller 接收请求,并组织转发请求到 Model,Model 实现逻辑代码和数据交互,返回结果给 Controller,Controller 执行页面处理并返回结果给请求。

MVC 应该包含什么?

没有固定答案,但以下内容是我预计要实现的:

入口文件(如 index.php)用于接受请求,注册应用,定义常量等

自动加载

注册插件

自定义路由 分发请求

依赖注入 容器

配置服务

错误 日志服务

ORM

视图引擎

CLI 命令行工具

测试工具

认证验证服务

框架简介

我把要实现的框架命名为 origin,希望各位带着初心出发 以后牛逼了别忘了 origin。

架构设计

框架的大致结构,如图所示

f102a5729d47610dd93547c80333a071.png

关键模块

架构图的最顶部有三个模块,分别是

分发器

容器

盒子

分发器的作用是,进行全局管理,包括所有类的实例化操作,公共方法的定义等,容器和盒子是分发器的子类,它们的区别在于,容器中的实例可以重复利用,盒子中的实例每次会重新创建。

容器就是 laravel 天天吹的容器

准备工作

我们在工作目录下创建一个名为 origin 的文件夹作为框架名称。

$ mkdir origin

在 origin 中需要创建一系列目录用来存放应用代码和框架本身的代码

$ cd origin

$ mkdir app core public

$ cd app

$ mkdir controllers models views conf

创建好后目录结构为(使用 tree 命令)

origin

- app

- conf

- controllers

- models

- views

- public

- core

其中文件夹 app 用来存放所有与应用相关的代码,core 用来存放框架本身的代码,public 存放入口文件(如 index.php)和公共资源(如 JS,CSS)。

总结

本结主要介绍了 MVC 框架的概念和工作流程,以及一些开发规范和命名空间。创建了一个 origin 的目录作为框架名称,并在该目录下创建了一些目录用于框架代码和应用代码的隔离。

下期见

作者:entner

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值