MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和掌握器(Controller)。
MVC模式的目的是实现一种动态的程序设计,使后续对程序的修正和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对繁芜度的简化,使程序构造更加直不雅观。软件系统通过对自身基本部份分离的同时也授予了各个基本部分应有的功能。专业职员可以通过自身的专长分组:
(掌握器Controller)- 卖力转发要求,对要求进行处理。
(视图View) – 界面设计职员进行图形界面设计。
(模型Model) – 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现详细的功能)。
模型(Model) “数据模型”(Model)用于封装与运用程序的业务逻辑干系的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“掌握器”,也便是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变革一样平常会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以理解在数据模型上发生的改变。
视图(View) 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一样平常没有程序上的逻辑。为了实现视图上的刷新功能,视图须要访问它监视的数据模型(Model),因此该当事先在被它监视的数据那里注册。
掌握器(Controller) 掌握器起到不同层面间的组织浸染,用于掌握运用程序的流程。它处理事宜并作出相应。“事宜”包括用户的行为和数据模型上的改变。
二、为什么要自己开拓MVC框架
网络上有大量精良的MVC框架可供给用,本教程并不是为了开拓一个全面的、终极的MVC框架办理方案,而是将它看作是一个很好的从内部学习PHP的机会,在此过程中,你将学习面向工具编程和设计模式,并学习到开放中的一些把稳事变。
更主要的是,你可以完备掌握你的框架,并将你的想法融入到你开拓的框架中。虽然不一定是做好的,但是你可以按照你的办法去开拓功能和模块。
三、开始开拓自己的MVC框架
在开始开拓前,让我们先来把项目建立好,假设我们建立的项目为hylm,那么接下来的第一步便是把目录构造先设置好。虽然在这个教程中不会利用到上面的所有的目录,但是为了往后程序的可拓展性,在一开始就把程序目录设置好使非常必要的。下面就详细说说每个目录的浸染:
application – 存放程序代码
config – 存放程序配置或数据库配置
db – 用来存放数据库备份内容
library – 存放框架代码
public – 存放静态文件
scripts – 存放命令行工具
tmp – 存放临时数据
在目录设置好往后,我们接下来就要来顶一下一些代码的规范:
MySQL的表名需小写并采取复数形式,如items,cars
模块名(Models)需首字母大写,并采取单数模式,如Item,Car
掌握器(Controllers)需首字母大写,采取复数形式并在名称中添加“Controller”,如ItemsController, CarsController
视图(Views)采取复数形式,并在后面添加行为作为文件,如:items/view.php, cars/buy.php
第一步将所有的的要求都重定向到public目录下,办理方案是在todo文件下添加一个.htaccesss文件,文件内容为:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.) public/$1 [L]
</IfModule>
在我们把所有的要求都重定向到public目录下往后,我们就须要将所有的数据要求都再重定向到public下的index.php文件,于是就须要在public文件夹下也新建一个.htaccess文件,文件内容为:
这么做的紧张缘故原由有:可以使程序有一个单一的入口,将所有除静态程序以外的程序都重定向到index.php上;可以用来天生利于SEO的URL,想要更好的配置URL,后期可能会须要URL路由,这里先不做先容了。做完上面的操作,就该当知道我们须要做什么了,没错!
在public目录下添加index.php文件,文件内容为:
把稳上面的PHP代码中,并没有添加PHP结束符号”?>”,这么做的紧张缘故原由是:对付只包含PHP代码的文件,结束标志(“?>”)最好不存在,PHP自身并不须要结束符号,不添加结束符号可以很大程度上防止末端被添加额外的注入内容,让程序更加安全。在index.php中,我们对library文件夹下的config.php发起了要求,那么config.php这个启动文件中到底会包含哪些内容呢?
config.php涉及到的内容并不多,不过是一些根本数据的一些设置,再来看看library下的共用文件shared.php该当怎么写