# 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]
```