第1章 TP5.0 安装
你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
1、TP5.0系列课程
<TP5.0 框架开发> <TP5.0 核心技术> <TP5.0 项目开发>
2、PHP框架?
TP3.2 框架
laravel 框架
Yii 框架
TP5.0 框架
3、ThinkPHP框架
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。
4、检测TP5.0 环境
PHP >= 5.4.0
PDO PHP Extension
MBstring PHP Extension
CURL PHP Extension
5、TP5.0的安装
a) 源代码包安装
1、去thinkphp官网(www.thinkphp.cn) 下载 完整版本的TP5.0
2、解压压缩包
3、将解压文件拷贝网站根目录 (www)
4、重命名 tp5
5、地址栏访问 http://localhost/tp5/public/
b) composer
1、官网
composer是 PHP 用来管理依赖(dependency)关系的工具。类似于linux 中yum源。
2、下载地址
https://getcomposer.org/download/
3、安装composer
双击软件,点击next进行安装
4、检测软件是否安装成功
1、win+r 输入cmd 回车
2、输入 composer
c) composer 安装
1、首先命令行切换到 网站根目录(www)
2、切换国内镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
3、安装tp5.0
composer create-project topthink/think composer_tp5 --prefer-dist
4、地址栏访问
http://localhost/composer_tp5/public/
d) git
1、简介
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
2、安装
找到对于的软件,双击安装,点击next
3、检测是否安装成功
命令行输入git
e) 使用git安装 tp5.0
1、首先命令行切换到 网站根目录(www)
2、拷贝项目仓库
git clone https://github.com/top-think/think git_tp5
3、切换到git_tp5 目录下
4、拷贝核心框架代码
git clone https://github.com/top-think/framework thinkphp
5、地址栏输入
http://localhost/git_tp5/public/
f) 三种安装方式比较
1、源代码包下载最方便
2、git 可以获取到最新的代码
3、建议大家使用源代码包下载
6、配置虚拟主机
1、配置本地路由表(C:\Windows\System32\drivers\etc\hosts)
127.0.0.1 www.tp.com
2、apache开启虚拟主机(C:\AppServ\Apache24\conf\httpd.conf)
# 第514行 去掉注释
Include conf/extra/httpd-vhosts.conf
3、修改虚拟主机配置(C:\AppServ\Apache24\conf\extra\httpd-vhosts.conf)
<VirtualHost *:80>
DocumentRoot "C:\AppServ\www\tp5\public"
ServerName www.tp.com
<Directory "C:\AppServ\www\tp5\public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
4、重启apache
5、地址栏输入 www.tp.com 访问
7、目录结构
|-application 应用目录 是整个网站的核心
|---|---index 前台目录
|---|-----|---controller 控制器
|---|-----|---model 数据模型
|---|-----|---view 页面
|---|---admin 后台目录
|-extend 扩展类库目录
|-public 静态资源和入口文件
|---|---static 存放静态资源 css、js、img
|---|---index.php 入口文件
|-runtime 网站运行临时目录
|-tests 测试目录
|-thinkphp TP框架的核心文件
|---|---lang 语言包
|---|---library TP核心文件
|---|---tpl 模板页面
|-vendor 第三方扩展目录
8、URL地址了解
http://www.tp.com/ index.php /Index /Index /index
域名 入口文件 前台 控制器 方法
9、了解TP开发模式
0、开始调试模式(C:\AppServ\www\tp5\application\config.php)
'app_debug' => true,
1、链接数据库(C:\AppServ\www\tp5\application\database.php)
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'yzm',
// 用户名
'username' => 'root',
// 密码
'password' => '123456789',
2、控制器中书写代码(C:\AppServ\www\tp5\application\index\controller\Index.php)
<?php
namespace app\index\controller;
// 引入系统数据类
use think\Db;
// 引入系统控制器类
use think\Controller;
class Index extends Controller
{
public function index()
{
// 从数据库中读取数据
$data=Db::table('user')->select();
// 分配数据给页面
$this->assign('data',$data);
// 加载页面
return view();
}
}
3、页面中(C:\AppServ\www\tp5\application\index\view\index\index.html)
{volist name="data" id="value"}
<tr>
<td>{$value.id}</td>
<td>{$value.name}</td>
<td>{$value.pass}</td>
</tr>
{/volist}
10、MVC模式
m model 模型
v view 视图
c controller 控制器
11、MVC在TP中如何体现
1、M model 模型
#C:\AppServ\www\tp5\application\index\model
作用: 执行数据库相关处理
2、V view 视图
#C:\AppServ\www\tp5\application\index\view
作用:其实就是页面
3、C Controller 控制器
#C:\AppServ\www\tp5\application\index\controller
作用:主要负责整个逻辑运转
12、MVC的变形
1、MC 模型和控制器
# 主要作用:用于接口开发
2、VC 视图和控制器
# 主要作用: 单页面的网站
第2章 TP5.0架构
1、TP架构的概述
ThinkPHP 使用了MVC模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
2、URL解析
http:// www.tp.com /index.php /Index /Index /index
协议 域名 入口文件 模块 控制器 方法
3、入口文件
1、文件地址
C:\AppServ\www\tp5\public\index.php
2、作用:
负责整个TP的请求
4、应用
1、应用地址
C:\AppServ\www\tp5\application
2、作用:
一个应用代表一个网站
5、模块(以前台为例)
1、模块地址
C:\AppServ\www\tp5\application\index
2、作用:
网站所有的前台相关都与其有关
3、新建后台模块
a、在应用目录下(C:\AppServ\www\tp5\application)新建admin目录
b、在admin目录下新建model、view和controller
c、在Controller目中新建Index控制器(Index.php)
d、在Index.php 中书写代码
// 声明命名空间
namespace app\admin\controller;
// 声明控制器
class Index{
public function index(){
return "我是后台的控制器";
}
}
e、通过地址栏访问
http://www.tp.com/index.php/Admin/Index/index
6、控制器
1、控制器目录
C:\AppServ\www\tp5\application\index\controller
2、作用:
书写业务逻辑
3、新建控制器(以前台为例)
a、正前台控制器目录(C:\AppServ\www\tp5\application\index\controller) 下新建User.php
b、在控制器中能书写代码
<?php
// 声明命名空间
namespace app\index\controller;
// 声明控制器
class User{
// index 方法
public function index(){
return "我是前台User控制器中的index方法";
}
}
c、地址栏访问
http://www.tp.com/index.php/Index/user/index
d、注意:
1、控制器的文件名必须首字母大写
2、控制中必须声明命名空间
3、控制器中类名必须和文件名一致
7、操作(方法)
1、操作地址
操作一般都在控制器的文件中
2、新建一个操作(以前台index控制器为例)
1、打开前台index控制器(C:\AppServ\www\tp5\application\index\controller\Index.php)
2、在控制器新建test方法
public function test(){
return "我是用户自己创建的方法";
}
3、地址栏访问
http://www.tp.com/index.php/Index/Index/test
8、模型(数据模型)
1、数据模型地址
C:\AppServ\www\tp5\application\index\model
2、作用:
负责数据库相关的处理
9、视图(页面)
1、视图地址
C:\AppServ\www\tp5\application\index\view
2、作用:
其实就是网站页面
10、命名空间
与目录有关(以前台index控制器命名空间为例)
C:\AppServ\www\tp5\application\index\controller
namespace app\index\controller;
11、跨控制器调用
1、使用命名空间
$model=new \app\admin\controller\Index;
echo $model->index();
2、使用use
use \app\admin\controller\Index as AdminIndex;
$model=new AdminIndex();
echo $model->index();
3、系统方法
# 系统方法一般在(C:\AppServ\www\tp5\thinkphp\helper.php)
$model=controller('admin/Index');
echo $model->index();
12、调用方法
1、调用当前控制器的test方法
1、使用面向对象的技术
echo $this->test();
echo self::test();
echo Index::test();
2、使用系统方法
echo action('test');
2、调用User控制器下的index方法
1、命名空间
$model=new \app\index\controller\User;
echo $model->index();
2、使用系统方法
echo action('User/index');
3、调用后台模块下Index控制器index方法
1、命名空间
$model=new \app\admin\controller\Index;
echo $model->index();
2、使用系统方法
echo action('admin/Index/index');
13、主要分析TP执行流程
1、入口文件(C:\AppServ\www\tp5\public\index.php)
作用:
1)定义目录常量
2)加载框架引导目录
2、加载框架的引导文件(C:\AppServ\www\tp5\thinkphp\start.php)
作用:
1) 引导基础文件
2) 对应用进行运转
3、加载框架的基础引导文件(C:\AppServ\www\tp5\thinkphp\base.php);
作用:
1) 加载系统常量
2) 引入loader类 (C:\AppServ\www\tp5\thinkphp\library\think\loader.php)
3) 引入环境变量
4) 注册自动记载机制
5) 注册异常处理机制(C:\AppServ\www\tp5\thinkphp\library\think\Error.php)
6) 记载惯例配置(C:\AppServ\www\tp5\thinkphp\convention.php)
4、运行应用(C:\AppServ\www\tp5\thinkphp\library\think\App.php) 下的run方法;
1、第一步: 加载当前控制器中 initCommon() 方法
2、第二步: 加载当前控制器中 init() 方法
1、加载各种配置文件
2、加载公共文件
3、加载语言包
3、第三步: 设置时区
4、第四步: 加载当前控制器 routeCheck() 方法 路由检测
5、第五步: 调用控制器中exec方法
根据用户请求进行分发处理
6、第六步: 根据不同请求类型记载对应文件 module方法
加载到对应的控制器和对应方法
5、响应输出
用户看到的所有界面就加载出来了
第3章 TP5.0 配置
1、配置文件格式
a) ThinkPHP支持多种格式的配置格式,但最终都是解析为PHP数组的方式。
b) 我们主要的学习形式就是数组
return [
'name'=>'',
'age'=>'',
];
2、配置的形式
1、惯例配置
a、惯例配置目录
C:\AppServ\www\tp5\thinkphp\convention.php
b、注意:
大家一般不要修改惯例配置
2、应用配置
a、应用配置目录
C:\AppServ\www\tp5\application\config.php
3、扩展配置
a、扩展配置
其实就是对配置文件进行分目录的管理
b、扩展配置目录
# C:\AppServ\www\tp5\application\database.php
# C:\AppServ\www\tp5\application\extra\用户可以自定义配置文件
c、读取database扩展配置
# 读取databse中的扩展项
dump(config('扩展文件名.password'));
dump(config('database.password'));
# 读取所有的database扩展
dump(config('database'));
d、自定义扩展配置
1、在 扩展目录(C:\AppServ\www\tp5\application\extra)下 新建user.php
2、打开文件
<?php
return [
"name"=>"小郭",
"love"=>"作家",
"wai"=>"小四"
];
3、读取自定义扩展配置
dump(config('user'));
dump(config('user.wai')
4、场景配置
a、解决问题
开发过程可能不同环境下进行开发
b、如何使用
1、修改应用配置(C:\AppServ\www\tp5\application\config.php)
'app_status' => 'home',
2、在应用目录下新建(C:\AppServ\www\tp5\application) 新建对应home.php
3、在home.php 中书写相关配置
5、模块配置
a、解决问题
每一个模块,都有自己特有的配置
b、如何使用(以前台模块为例)
1、在前台模块下(C:\AppServ\www\tp5\application\index)新建 config.php
2、打开配置文件书写
<?php
return [
"index"=>"我是前台配置"
];
6、动态配置
1、系统方法
// config(参数1,参数2);
config('name','PHP开发');
2、系统类
\think\Config::set('name','WEB前端');
use \think\Config;
Config::set('name','小程序开发');
3、读取配置
1、通过系统类
# 如果配置项存在 直接输出 不存在返回NULL
1、打印配置信息
echo \think\Config::get('name');
2、打印数组配置信息
echo \think\Config::get('teacher');
echo \think\Config::get('teacher.name');
2、通过系统方法
1、打印配置信息
echo config('name');
2、打印数组配置信息
dump(config('teacher'));
dump(config('teacher.name'));
3、读取所有配置
dump(config());
3、使用use
1、打印配置信息
use \think\Config;
echo Config::get('kouhao');
2、打印数组配置信息
use \think\Config;
echo Config::get('teacher');
echo Config::get('teacher.name');
4、系统类
(C:\AppServ\www\tp5\thinkphp\library\think)
Config 设置和获取配置文件
5、系统方法
(C:\AppServ\www\tp5\thinkphp\helper.php)
Controller 实例化控制器
action 调用模块的操作方法
config 设置和获取配置
dump 浏览器友好的变量输出
6、配置文件之间的加载顺序
1、优先级
动态配置>模块配置>场景配置>扩展配置>应用配置>惯例配置
2、加载顺序
惯例配置->应用配置->扩展配置->场景配置->模块配置->动态配置
3、配置文件实现原理
$data=array(
"name"=>"惯例配置",
'a'=>'a'
);
$data1=array(
"name"=>'应用配置',
"b"=>'b'
);
# 后面加载的配置,把前面加载匹配同名覆盖
dump(array_merge($data,$data1));
7、环境变量配置
1、TP5.0 支持环境变量配置
2、设置环境变量配置
a、打开网站根目录(C:\AppServ\www\tp5) 新建.env
b、书写环境配置
name=haoge
age=18
[database]
type=mysql
root=root
pass=123qweaasd
c、注意配置环境变量不能使用中文
3、读取环境配置
a、命名空间
dump(\think\Env::get('name'));
dump(\think\Env::get('abc','不存在'));
# 读取数组配置
# 不能读取整个数组
dump(\think\Env::get('database.type'));
b、use 导入系统类
use \think\Env;
dump(Env::get('name'));
# 读取数组配置
# 不能读取整个数组
dump(Env::get('database.type'));
4、如何使用
打开配置文件
use \think\Env;
return [
// 应用调试模式
'app_debug' => Env::get('app_debug',false),
// 应用模式状态
'app_status' => Env::get('app_status',''),
];
第4章 TP5.0 路由
1、路由作用:
1、简化URL地址,方便大家记忆
2、有利于搜索引擎优化
2、入口文件:
1、前后台分离
a、在网站public目录下(C:\AppServ\www\tp5\public) 新建admin.php
b、打开admin.php
<?php
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
2、绑定模块
1、实现功能
index.php 这个入口文件 只能去前台模块
admin.php 这个入口文件 只能去后台模块 #建议后台的入口文件稍微复杂一些
2、如何实现
在入口文件中
define("BIND_MODULE",'index'); # 绑定前台模块
define("BIND_MODULE",'admin'); # 绑定后台模块
3、URL地址发生改变
1、入口绑定之前
http://www.tp.com/admin.php/模块/控制器/方法
2、入口绑定之后
http://www.tp.com/admin.php/控制器/方法
3、隐藏入口文件
1、开启apache的重写(C:\AppServ\Apache24\conf\httpd.conf)
# 把注释开启
LoadModule rewrite_module modules/mod_rewrite.so
2、设置访问权限 (C:\AppServ\Apache24\conf\extra\httpd-vhosts.conf)
<VirtualHost *:80>
DocumentRoot "C:\AppServ\www\tp5\public"
ServerName www.tp5.com
<Directory "C:\AppServ\www\tp5\public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
3、入口文件,在网站public目录下新建.htaccess 文件
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
4、重启服务
5、url地址变化
1、隐藏之前
http://www.tp.com/index.php/Index/test
2、隐藏之后
http://www.tp.com/Index/test
3、Tp5.0路由学习注意:
1、支持三种方式的URL解析规则
2、路由只针对应用,不针对模块,因此路由的设置也是针对应用下面的所有模块。
3、关闭后台模块,在后台入口文件(C:\AppServ\www\tp5\public)
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 绑定后台
define('BIND_MODULE','admin');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
// 关闭admin模块的路由
// 必须写到 加载框架引导文件 之后否则报错
\think\App::route(false);
4、路由模式
1、普通模式
a、定义
关闭路由,完全使用默认的 PATH_INFO 方式URL:
b、形式
http://www.tp.com/admin.php/index/index
c、如何设置
// 是否开启路由
'url_route_on' => false,
// 是否强制使用路由
'url_route_must' => false,
2、混合模式
a、定义:
开启路由,并使用路由定义+默认 PATH_INFO 方式的混合
b、如何设置
// 是否开启路由
'url_route_on' => true,
// 是