# Michael-MVC **Repository Path**: mikeah2011/Michael-MVC ## Basic Information - **Project Name**: Michael-MVC - **Description**: 这是我的第一个MVC-git版本迭代 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-12-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MVC ### 1. mvc 的定义 ``` M Model 模型层 V View 视图层 C Controller 控制器 ``` - 公共的模型层 M - 模版视图文件 V - 一般来说 一个模块 对应一个类 对应一个控制器 C ### 2. mvc 优势 - 高内聚 低耦合 - 易于维护 - 代码可读性 - 单一入口 index.php ### 3. 缺点 - 执行效率有所降低: OOP - 学习难度较大 ### 4. MVC 实例 #### 4.1. mvc 1.0 ``` 目录结构及文件作用说明: |-- models 模型层 |-- DB.class.php |-- views 视图层 // 空文件夹不做提交 |-- controllers 控制层 |-- IndexController.php |-- UserController.php |-- GoodsController.php |-- configs 配置文件目录 |-- config.php |-- index.php 入口文件 |-- .git // git init初始化生成的隐藏文件夹 |-- .idea // IDE-PHPStorm编译器加载出的文件夹,需要在git提交前忽略该文件 |-- readme.md // 阅读文档,git版本必需文件,可编辑使用手册说明等,将在git项目下方显示出来 |-- .gitignore // 忽略文件,git版本必需文件,可编辑忽略文件目录名称 URL: index.php?c=控制器名&a=操作名 index.php?c=User&a=add ``` 小乌龟的使用- IDE-PHPStorm中VCS插件的使用- #### 4.2. mvc 2.0 ##### 4.2.1 自动加载类 ##### 4.2.2 git操作分支管理策略:码云【gitee】 > 所有的代码优先上传至各个分支,如dev等项目分支,再由项目组长进行分支合并 > 合并方案: > 1). 本地合并后再推送到master默认主分支上;【推荐】 > 2). 远程直接合并。【不推荐】 1. 克隆git仓库到本地非工作目录(非本地仓库): git clone git@gitee.com:Michael_26/Michael-MVC.git Michael PS: a. git@gitee.com:Michael_26/Michael-MVC.git >>>远程git仓库地址,即SSH密钥地址 b. Michael >>>[本地非仓库目录] 2. 切换分支可查看两分支的代码区别: git checkout dev // 切换至dev新增分支 git checkout master // 切换至master默认分支 3. 在本地实现dev与master的合并(本地合并): // 合并分支前,务必切换至master主分支上进行操作,不能颠倒顺序: 即:git checkout master 操作:````git merge dev```` 进行合并 4. 将本地目录Michael文件夹中的master分支推送至远程git仓库中的master默认分支即可。 ````git push origin master:master```` 如发生冲突,即使用````git diff````查看异常,并解决<<<===>>>内的代码; 远程合并发生冲突不可返回,故不推荐远程合并。 #### 4.3. mvc 3.0 #### 4.4. mvc 4.0 #### 4.5. MVC 5.0 #### 4.6. mvc 6.0 [扩展] ``` 优化URL ./index.php?c=User&a=index 目前的URL ./index.php/User/add 优化成用path模式 ./index.php/User/add.html 再加上静态后缀 localhost/User/add.html 再省略index.php部分 ``` ``` tips: $_SERVER['PATHINFO']; rewrite模块要打开 .htaccess 文件放在根目录 Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] ```