ThinkPHP5_基础笔记

这篇博客详细介绍了ThinkPHP5的基础知识,包括安装、架构、配置、路由、控制器、请求响应、数据库操作、模型、视图模板、验证器及各种杂项功能,如缓存、Session、Cookie等,是学习TP5开发的全面指南。
摘要由CSDN通过智能技术生成

ThinkPHP5_云知梦_基础

第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,
		// 是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值