# ThinkPHP基础(一)
## 1.学习目标
- 了解常用MVC框架
- 了解ThinkPHP5框架
- ThinkPHP5框架的安装
- 了解TP框架目录结构及开发规范
- 创建mvc
## 2. MVC介绍
##### 2.1 MVC定义
- MVC全名是Model View Controller,是模型(model)、视图(view)、控制器(controller)的缩写,是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个文件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,方便协作开发以及后期的维护。
##### 2.2 传统模式和MVC模式对比
- 传统的开发模式,是混编模式,要求程序开发者全才懂前端懂后端或前端在工作,后端在打麻将,后端在开发,前端闲的蛋疼,严重影响开发的工作效率。
- MVC分层开发模式,协同开发及后期维护方便,弊端就是比混编模式下代码多了,但是利大于弊。
##### 2.3 MVC的优势
- 耦合性低
- 重用性高
- 可维护性高
- 有利于软件的工程化
##### 2.4 MVC的变形
- 无Model模式的web开发,如企业官网
- 无View模式的API接口开发,如给APP写接口
- Model再分层和Controller再分层
##### 2.5 MVC三者之间的关系
## 3.常用开源MVC框架
- 国外主流开源框架:Laravel、CodeIgniter(ci)、cakePHP、ZendFramework、Symfony、yii等。
- 国内主流框架: ThinkPHP、FleaPHP等。
## 4.ThinkPHP简介
- ThinkPHP是一个免费开源的、快速简单的、面向对象的、轻量级PHP开发框架
- 创立于2006年初,遵循Apache2开源协议发布
- 秉承简洁实用的设计原则,注重易用性
- 拥有众多的原创功能和特性,在易用性、扩展性和性能方面不断优化和改进
- 已成长为国内最领先和最具影响力的WEB应用开发框架
##### 4.1 为什么选择ThinkPHP5?
- ThinkPHP5采用了全新的架构思想
- 优化了核心是一个颠覆性的版本
- 支持composer,git方法安装
- 对API进行了大量的优化更符合了现代web开发的方式
## 5. Thinkphp5的安装方式
- git
- composer
- 官网下载。
##### 5.1 git安装
```
github仓库地址:
应用项目:https://github.com/top-think/think
核心框架:https://github.com/top-think/framework
如果你访问github速度比较慢,可以考虑下面两个国内GIT仓库:
[ 码云 ]
应用项目:https://git.oschina.net/liu21st/thinkphp5.git
核心框架:https://git.oschina.net/liu21st/framework.git
[ Coding ]
应用项目:https://git.coding.net/liu21st/thinkphp5.git
核心框架:https://git.coding.net/liu21st/framework.git
```
- 首先克隆下载应用项目仓库
```
git clone https://github.com/top-think/think tp5
```
- 然后切换到tp5目录下面,再克隆核心框架仓库:
```
git clone https://github.com/top-think/framework thinkphp
```
- 两个仓库克隆完成后,就完成了ThinkPHP5.0的Git方式下载,如果需要更新核心框架的时候,只需要切换到thinkphp核心目录下面,然后执行:
```
git pull https://github.com/top-think/framework
```
##### 5.2 composer安装
- ThinkPHP5支持使用Composer安装,如果还没有安装 Composer,你可以按 Composer安装中的方法安装。
- 在 Linux 和 Mac OS X 中可以运行如下命令:
```
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
```
- 在 Windows 中,你需要下载并运行 Composer-Setup.exe。然后在命令行下面,切换到你的web根目录下面并执行下面的命令:
```
composer create-project topthink/think tp5 --prefer-dist
```
##### 5.3 官网下载
- 将下载的框架文件解压之后放入WWW文件夹中,然后访问http://localhost/public/index.php
- 出现以下页面就表示安装成功:
**注意**:以上版本,github版本是最新的版本,官网下载的是比较全,但不是最新的版本。本套教程以下载官网ThinkPHP5.0.10完整版做演示,其他版本大同小异。
## 6.Thinkphp5的框架结构目录
```
project 应用部署目录
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─route.php 路由配置文件
├─extend 扩展类库目录(可定义)
├─public WEB 部署目录(对外访问目录)
│ ├─static 静态资源存放目录(css,js,image)
│ ├─index.php 应用入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─runtime 应用的运行时目录(可写,可设置)
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架系统目录
│ ├─lang 语言包目录
│ ├─library 框架核心类库目录
│ │ ├─think Think 类库包目录
│ │ └─traits 系统 Traits 目录
│ ├─tpl 系统模板目录
│ ├─.htaccess 用于 apache 的重写
│ ├─.travis.yml CI 定义文件
│ ├─base.php 基础定义文件
│ ├─composer.json composer 定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 惯例配置文件
│ ├─helper.php 助手函数文件(可选)
│ ├─LICENSE.txt 授权说明文件
│ ├─phpunit.xml 单元测试配置文件
│ ├─README.md README 文件
│ └─start.php 框架引导文件
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
```
## 7.Thinkphp5的开发规范
```
01、目录使用小写+下划线的方式命名
02、类库函数文件均以 .php 结尾
03、类的文件名均以命名空间定义,且命名空间和类库文件所在的路径一致
04、类文件采用驼峰,首字母大写,其余文件为小写+下划线命名
05、类名和类文件名保持一致,采用驼峰命名,首字母大写
06、类采用驼峰命名,首字母大写不需要添加后缀
07、函数使用驼峰命名,首字母小写,如(getUserInfo)
08、属性名采用驼峰,首字母小写,如(tableName)
09、以双下划线__开头的函数或方法为魔术方法
10、常量以大写字母和下划线命名
11、配置参数以小写字母和下划线命名
12、表和字段采用小写+下划线的命名方式,不能以下划线开头
13、应用类库的命名空间统一为app(可以配置)
```
## 8.域名的配置
- 由于我们在wamp下一般不止放一个项目,www下一个文件里面就一个项目。导致我们开发时wamp/lamp/lnmp开发时设置的配置不同,造成在wamp环境下开发完好后,上线出现大小写、url路径等问题。为了避免这种情况的产生,所以我们在wamp环境下开发,配置好域名,同步线上访问路径。
##### 8.1 配置域名
- 1、找到apache安装目录下的,配置文件`httpd.conf`,把下面这项最前面的`#`去掉加载此项配置`Include conf/extra/httpd-vhosts.conf`
- 2、打开`conf/extra/httpd-vhosts.conf`文件,做以下配置
- 3、`C:\Windows\System32\drivers\etc`路径下,用编辑器打开`hosts`文件,添加一条如下配置:
```
127.0.0.1 think.com
```
- 4、因为我们有修改过apache服务器的内容,要使得这次修改的配置生效,重启服务器。
- 浏览器地址输入think.com,如下图所示,那么,域名配置成功。
##### 8.2 配置URL重写
- 比如需要访问index模块Index控制器index方法,路径需要写成:`http://think.com/index.php/index/index/index`,里面需要写一个入口文件,index.php入口文件,看上去非常的不优雅,那入口让这入口文件隐藏呢?
- 下面是配置apache服务器的操作流程,IIS、Nginx的配置参照框架开发手册:
- 1、打开服务器`httpd.conf`配置文件,加载重写`mod_rewrite.so`模块
- 2、httpd.conf文件中的AllowOverride None将`None`改为`All`
- 3、把下面的内容保存为`.htaccess`文件放到应用入口文件index.php的同级目录下
- 4、因为我们修改了服务器的内容,所以要重启服务器。
- 5、如上图所示,重写模式配置成功,入口文件index.php就隐藏完毕,当然啦,访问的时候如果有加index.php文件也可以正常访问。
##### 8.3 创建mvc模块
- 1、为了以后更好的理解路径,可以把应用项目的名称改成app,然后再修改入口文件配置,如下图修改即可:
- 2、创建完整的mvc,就是在app目录下创建一个index前端模块的文件夹,然后在其下面创建model模型文件夹、view视图文件夹、controller控制器文件夹。注意:文件名都是小写。
- 3、在controller下创建Index.php控制器 注意:文件名开头大写。
- 4、访问前台首页
- 5、根据上面的步骤,我们复制操作创建一个后台的mvc模块
- 6、访问后台首页
##### 8.4 总结上面文件我们要知道的事情:
- 控制器下的文件名和我们的类名一致,而且开头是要大写,符合面向对象里我们类的命名规范,开头要大写
- 命名空间的路径是从web根目录开始,也就是应用开始的文件名称一直到该文件所在的文件夹app\index\index\index
- 此控制器的写法完全跟面向对象学习的类的写法完全一致
## 9.课堂总结
通过此节课的学习,我们应该掌握以下知识:
```
1、学会ThinkPHP框架的安装
2、域名的配置
3、配置URL重写
4、创建mvc
```
## 10. 课后练习
```
1、安装ThinkPHP框架
2、域名的配置
3、配置URL重写
4、创建MVC
```
领取专属 10元无门槛券
私享最新 技术干货