加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.cn/)- AI行业应用、低代码、混合云存储、数据仓库、物联网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

编写PHP MVC框架

发布时间:2022-08-11 11:49:09 所属栏目:PHP教程 来源:互联网
导读:1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式。 MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 PHP中MVC模式也称Web MVC,从上世纪70年代进化而来。 MVC的目的是实现一种动态的程序
  1 什么是MVC
  MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式。 MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 PHP中MVC模式也称Web MVC,从上世纪70年代进化而来。 MVC的目的是实现一种动态的程序设计,便于后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。 除此之外,此模式通过对复杂度的简化,使程序结构更加直观。 MVC各部分的职能:
 
  模型Model – 管理大部分的业务逻辑和所有的数据库逻辑。模型提供了连接和操作数据库的抽象层。
  控制器Controller – 负责响应用户请求、准备数据,以及决定如何展示数据。
  视图View – 负责渲染数据,通过HTML方式呈现给用户。
  1.gif
 
  一个典型的Web MVC流程:
 
  1、Controller截获用户发出的请求;
 
  2、Controller调用Model完成状态的读写操作;
 
  3、Controller把数据传递给View;
 
  4、View渲染最终结果并呈献给用户。
 
  2 为什么要自己开发MVC框架
  网络上有大量优秀的MVC框架可供使用,本教程并不是为了开发一个全面的、终极的MVC框架解决方案。 我们将它看作是一个很好的从内部学习PHP的机会。 在此过程中,你将学习面向对象编程和MVC设计模式,并学习到开发中的一些注意事项。 更重要的是,通过自制MVC框架,每个人都可以完全控制自己的框架,将你的想法融入到你的框架中。 这不是很美妙的事情吗~~~
 
  3 准备工作
  3.1 环境准备
  这里我们需要最基本的PHP环境:
 
  Nginx或Apache
  PHP5.4+
  MySQL
  推荐使用phpStudy或docker一键安装这样的LNMP环境。
 
  3.2 代码规范
  在目录设置好以后,我们接下来规定代码的规范:
 
  1、MySQL的表名需小写或小写加下划线,如:item,car_orders。
 
  2、模块名(Models)需用大驼峰命名法,即首字母大写,并在名称后添加Model,如:ItemModel,CarModel。
 
  3、控制器(Controllers)需用大驼峰命名法,即首字母大写,并在名称后添加Controller,如:ItemController,CarController。
 
  4、方法名(Action)需用小驼峰命名法,即首字母小写,如:index,indexPost。
 
  5、视图(Views)部署结构为控制器名/行为名,如:item/view.php,car/buy.php。
 
  上述规则是为了程序能更好地相互调用。 接下来就开始真正的PHP MVC编程了。
 
  3.3 目录准备
  在开始开发前,我们给这个框架先起个名字吧,就叫:Fastphp框架。 然后根据需要来把项目的目录创建。 假设我们建立的项目为 project,目录结构就这样:
 
 
 
  project                 WEB部署根目录
 
  ├─app                   应用目录
 
  │  ├─controllers        控制器目录
 
  │  ├─models             模块目录
 
  │  ├─views              视图目录
 
  ├─config                配置文件目录
 
  ├─fastphp               框架核心目录
 
  │ ├─base                MVC基类目录
 
  │ ├─db                  数据库操作类目录
 
  │ ├─Fastphp.php         内核文件  
 
  ├─static                静态文件目录
 
  ├─index.php             入口文件
 
  然后按照下一步,把Nginx或者Apache的站点根目录配置到project目录,。
 
  3.4 重定向
  重定向的目的有两个:设置根目录为project所在位置,以及将所有请求都发送给 index.php 文件。 如果是Apache服务器,在 project 目录下新建一个 .htaccess 文件,内容为:
 
 
 
  <IfModule mod_rewrite.c>
 
  # 打开Rerite功能
 
  RewriteEngine On
 
   
 
      # 如果请求的是真实存在的文件或目录,直接访问
 
      RewriteCond %{REQUEST_FILENAME} !-f
 
      RewriteCond %{REQUEST_FILENAME} !-d
 
   
 
      # 如果访问的文件或目录不是真事存在,分发请求至 index.php
 
      RewriteRule . index.php
 
  </IfModule>
 
  如果是Nginx服务器,修改配置文件,在server块中加入如下的重定向:
 
 
 
  <span class="hljs-title">location</span> / {
 
  <span class="hljs-comment">    # 重新向所有非真是存在的请求到index.php
 
  </span><span class="hljs-title">    try_files</span> <span class="hljs-variable">$uri</span> <span class="hljs-variable">$uri</span>/ /index.php<span class="hljs-variable">$args</span>;
 
  }
 
  这样做的主要原因是:
 
  (1)静态文件能直接访问。如果文件或者目录真实存在,则直接访问存在的文件/目录。 比如,静态文件static/css/main.css真实存在,就可以直接访问它。 (2)程序有单一的入口。 这种情况是请求地址不是真实存在的文件或目录,这样请求就会传到 index.php 上。 例如,访问地址:localhost/item/detail/1,在文件系统中并不存在这样的文件或目录。 那么,Apache或Nginx服务器会把请求发给index.php,并且把域名之后的字符串赋值给REQUEST_URI变量。 这样在PHP中用$_SERVER['REQUEST_URI']就能拿到/item/detail/1; (3)可以用来生成美化的URL,利于SEO。

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读