ThinkPHP5.0 学习笔记
第一章 TP5.0 基础
01 tp5.0 安装
1.TP5.0的安装
1.1源代码包安装
1.1.1thinkphp官网(www.thinkphp.cn) 下载
1.1.2解压到网站根目录(www)
1.1.3地址栏访问:http://localhost/tp5/public
1.2 composer安装
1.3 git安装
02 配置虚拟主机
1.配置本地路由表(C:WindowsSystem32driversetchosts)
添加 127.0.0.1 www.tp5.com
2.apache 开启虚拟主机(D:PHPHOMEApache24confhttpd.conf)
第505行 去掉# Include conf/extra/httpd-vhosts.conf
3.修改虚拟主机的配置(D:PHPHOMEApache24confextrahttpd-vhosts.conf)
1 <VirtualHost *:80> 2 DocumentRoot "D:PHPHOMEwww p5public" 3 ServerName www.tp5.com 4 <Directory "D:PHPHOMEwww p5public"> 5 Options Indexes FollowSymLinks 6 AllowOverride All 7 Require all granted 8 </Directory> 9 </VirtualHost>
4.重启 apache
访问:www.tp5.com
03 tp5 目录介绍
|--application # 应用目录,是整个网站的核心
|--|--index # 前台目录
|--|--|--controller # 控制器
|--|--|--model # 数据模型
|--|--|--view # 页面
|--|--admin # 后台目录
|--extend # 扩展类库目录
|--public # 静态资源和入口文件
|--|--static # 存放静态资源 css,js,img
|--|--index.php # 入口文件
|--runtime # 网站运行临时文件
|--tests # 测试目录
|--thinkphp # 框架的核心文件
|--|--lang # 语言包
|--|--library # TP核心文件
|--|--tpl # 模板页面
|--vendor # 第三方扩展目录
04 url 地址了解
http:// www.tp5.com/ index.php/ Index/ Index/ index
域名 入口文件 前台 控制器 方法
05 了解网站开发模式
1.开启调试模式(D:PHPHOMEwww p5applicationconfig.php)
// 应用调试模式 'app_debug' => true,
2.连接数据库(D:PHPHOMEwww p5applicationdatabase.php)
// 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => '', // 用户名 'username' => 'root', // 密码 'password' => '',
3.控制器中书写代码(D:PHPHOMEwww p5applicationindexcontrollerIndex.php)
<?php namespace appindexcontroller; use appindexcontrollerUser; use appadmincontrollerIndex as AdminIndex; // 引入系统数据类 use thinkDb; // 引入 Config 类 use hinkConfig; // 引入系统控制器类 use thinkController; // 引入Env类 use hinkEnv; class Index extends Controller { public function index() { /* 页面返回 Hello world return "Hello world"; */ // 从数据库中读取数据 $data=Db::table('login')->select(); // var_dump($data); // 分配数据给页面 $this->assign('data',$data); // 加载页面 return view(); } }
4.页面中(D:PHPHOMEwww p5applicationindexviewindexindex.html)
<html> <head> <title>Document</title> </head> <body> <table border="1" width="800px" align="center"> <tr> <th>ID</th> <th>username</th> <th>passwd</th> </tr> {volist name='data' id="value"} <tr> <td>{$value.id}</td> <td>{$value.username}</td> <td>{$value.passwd}</td> </tr> {/volist} </body> </html
05 MVC模式
1.M model 模型
# D:PHPHOMEwww p5applicationindexmodel
作用:执行数据库相关处理
2.V view 视图
# D:PHPHOMEwww p5applicationindexview
作用:其实就是页面
3.C controller 控制器
# D:PHPHOMEwww p5applicationindexcontroller
作用:主要负责整个逻辑运转
扩展:
MC 模型和控制器
# 主要作用:用于接口开发
VC 视图和控制器
# 主要作用:单页面的网站
第二章 TP5.0 架构
01 TP 架构的概述
ThinkPHP 使用了MVC 模式,它强制性的使应用程序的输入,处理和输出分开。使用 MVC应用程序被分成三个核心部件:模型(M),视图(V),控制器(C),它们各自处理自己的 任务
02 URL 解析
http:// www.tp5.com /index.php /Index /Index /index
协议 域名 入口文件 模块 控制器 方法
03 入口文件
1.文件地址
# D:PHPHOMEwww p5publicindex.php
2.作用
负责整个TP的请求
04 应用
1.应用地址
# D:PHPHOMEwww p5application
2.作用
一个应用代表一个网站
05 模块(以前台为例)
1.模块地址
# D:PHPHOMEwww p5applicationindex
2.作用
网站所有的前台相关都与其有关
3.新建后台模块
a.在应用目录下(D:PHPHOMEwww p5application)新建admin目录
b.在admin目录下新建 model,view,controller
c.在Controller目录中新建Index控制器(Index.php)
d.在Index.php中书写代码
<?php // 声明命名空间 namespace appindexcontroller; // 声明控制器 class User{ // index 方法 public function index(){ return "我是后台控制器"; } } ?>
e.通过地址栏访问
http://www.tp5.com/index.php/Admin/Index/index
06 控制器
1.控制器目录
# D:PHPHOMEwww p5applicationindexcontroller
2.作用 书写业务逻辑
3.新建控制器(以前台为例)
a.在前台控制器目录(D:PHPHOMEwww p5applicationindexcontroller)下新建 User.php
b.在控制器中书写代码
<?php // 声明命名空间 namespace appindexcontroller; // 声明控制器 class User{ // index 方法 public function index(){ return "我是前台 User 控制器中的 index 方法"; } } ?>
c.地址栏访问
http://www.tp5.com/index.php/Index/User/index
d.注意
1.控制器的文件名必须首字母大写
2.控制中必须声明命名空间
3.控制器中的类名必须和文件名相同
07 操作(方法)
1.操作地址 操作一般都在控制器的文件中
2.新建一个操作(以前台index控制器为例)
2.1 打开前台index控制器 (D:PHPHOMEwww p5applicationindexcontrollerIndex.php)
2.2 在控制器新建test方法
public function test() { return "我是用户自己创建的方法"; }
2.3 地址栏访问
# http://www.tp5.com/index.php/Index/Index/test
08 模型(数据模型)
1.数据模型地址
# D:PHPHOMEwww p5applicationindexmodel
2.作用 负责数据库相关的处理
09 视图(页面)
1.视图地址
# D:PHPHOMEwww p5applicationindexview
2.作用 网站页面
10 命名空间
1.与目录有关(以前台index控制器命名空间为例)
namespace appindexcontroller;
D:PHPHOMEwww p5applicationindexcontroller
11 跨控制器调用
1.使用命名空间
$model=new appindexcontrollerUser(); echo $model>index();
2.使用 user
use appadmincontrollerIndex as AdminIndex; $model=new AdminIndex(); echo $model->index();
3.使用系统方法
# 系统方法一般在(D:PHPHOMEwww p5 hinkphphelper.php)
$model=controller('admin/Index'); // 注意此时为反斜杠,如果书写成 \,将会出错 echo $model>index();
11 调用方法
1.调用当前控制器的test方法
# 使用面向对象的技术
// 调用当前控制器的 test 方法 echo $this>test(); echo "<hr>"; echo self::test(); echo "<hr>"; echo Index::test();
2.调用User控制器下的index方法
# 命名空间
$model=new appindexcontrollerUser; echo $model>index(); # 使用系统方法 echo action('User/index');
3.调用后台模块下Index控制器index方法
# 命名空间 $model=new appadmincontrollerIndex(); echo $model>index(); # 使用系统方法 echo action('Admin/Index/index');
11 主要分析TP执行流程
1.入口文件(D:PHPHOMEwww p5publicindex.php)
作用:
1)定义目录常量
2)加载框架引导目录
2.加载框架的引导文件(D:PHPHOMEwww p5 hinkphpstart.php)
作用:
1)引导基础文件
2)对应用进行运转
3.加载框架的基础引导文件(D:PHPHOMEwww p5 hinkphpase.php)
作用:
1)加载系统常量
2)引入loader类(D:PHPHOMEwww p5 hinkphplibrary hinkLoader.php)
3)引入环境变量
4)注册自动加载机制
5)注册异常处理进制(D:PHPHOMEwww p5 hinkphplibrary hinkError.php)
6)记载惯例配置(D:PHPHOMEwww p5 hinkphpconvention.php)
4.运行应用(D:PHPHOMEwww p5 hinkphplibrary hinkApp.php) 下的 run方法
1)第一步:加载当前控制器中 initCommon() 方法
2)第二步:加载当前控制器中 init() 方法 加载各种配置文件,加载公共文件,加载语言包
3)第三步:设置时区
4)第四步:加载当前控制器 routeCheck() 方法 路由检测
5)第五步:调用控制器中 exec() 方法 根据用户请求进行分发处理
6)第六步:根据不同的请求类型加载对应文件 module() 方法 加载到对应的控制器和对应方法 5.响应输出 用户看到的所有界面就加载出来
第三章 TP5.0 配置
01 配置文件格式
1.ThinkPHP支持多种格式的配置格式,但最终都是解析为PHP数组的方式
return [ // 默认模块名 'default_module' => 'index', // 默认控制器名 'default_controller' => 'Index', // 默认操作名 'default_action' => 'index', //更多配置参数 //... ];
02 配置的形式
1.惯例配置
a.惯例配置目录# D:PHPHOMEwww p5 hinkphpconvention.php
2.应用配置
a.应用配置目录 # D:PHPHOMEwww p5applicationconfig.php
3.扩展配置
a.扩展配置 其实就是对配置文件进行分目录的管理
b.扩展配置目录 # D:PHPHOMEwww p5applicationdatabase.php
# D:PHPHOMEwww p5applicationextra 用户可以自定义配置文件
c.读取database扩展配置 # 读取database中的扩展项 dump(config('扩展文件名.password'))
dump(config('database.password')); # 读取所有database扩展 dump(config('database'));
d.自定义扩展配置
d1.在扩展目录(D:PHPHOMEwww p5applicationextra)下新建对应文件 user.php
d2.打开文件书写相关配置
<?php return [ 'name'=>'LQ6H', 'dream'=>'hacker', 'waihao'=>'xiaoqiang' ]; ?>
d3.读取自定义的扩展配置
dump(config('user'));
dump(config('user.dream'));
4.场景配置
a.解决问题 开发过程可能不同环境下进行开发
b.如何使用 b1.修改应用配置(D:PHPHOMEwww p5applicationconfig.php) # 修改成 home
// 应用模式状态 'app_status' => 'home',
b2.在应用目录下新建(D:PHPHOMEwww p5application) 新建对应home.php office.php b3.在 home.php 中书写相关配置
return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'home', // 用户名 'username' => 'root', // 密码 'password' => '123456', // 端口 'hostport' => '', // 连接dsn 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => true,
在office.php中书写相关配置
return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'office', // 用户名 'username' => 'root', // 密码 'password' => '123456', // 端口 'hostport' => '', // 连接dsn 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => true,
b4.读取配置信息
// 读取场景配置 public function getchangjiang() { dump(config('database.database')); dump(config('database.password')); }
如果改成:
// 应用模式状态 'app_status' => 'office',
思考:比较输出内容,明白场景配置
5.模块配置
a.解决问题 每一个模块,都有自己特有的配置
b.如何使用(以前台模块为例)
b1.在前台模块下(D:PHPHOMEwww p5applicationindex)新建 config.php
b2.打开配置文件书写
<?php return [ 'index'=>'我是前台配置' ]; ?>
b3.读取
// 读取模块配置 public function getmokuai() { dump(config('index')); }
6.动态配置(D:PHPHOMEwww p5applicationindexcontrollerIndex.php)
a.系统方法
// 通过系统方法 ,config(参数1,参数2) config('name','PHP 开发'); dump(config('name'));
b.系统类
// 通过系统类 hinkconfig::set('name','web 前端'); dump(config('name'));
通过 use
// 引入 Config 类 use hinkConfig; // 通过use Config::set('name','小程序开发'); dump(config('name'));
03 读取配置
1.通过系统类
a.打印配置信息
// 通过系统类读取配置 echo hinkConfig::get('name'); // 如果配置项存在,直接输出,不存在返回NULL dump( hinkConfig::get('abc'));
b.打印数组配置信息
dump( hinkConfig::get('teacher'));
dump( hinkConfig::get('teacher.name'));
2.通过系统方法
a.打印配置信息
// 系统函数读取配置 echo config('name'); echo "<hr>"; echo config('age'); echo "<hr>"; echo config('ZhuiZhu');
b.打印数组配置信息
// 通过config方法获取数组 dump(config('teacher')); // 使用 teacher['name'],输出 NULL dump(config('teacher.name'));
c.读取所有配置
dump(config());
3.使用 use
a.打印配置信息
// 引入 Config 类 use hinkConfig; echo dump(Config::get('ZhuiZhu'));
b.打印数组配置信息
// 引入 Config 类 use hinkConfig; // 通过config类 获取配置 dump(Config::get('teacher'));
06 系统类(D:PHPHOMEwww p5 hinkphplibrary hink)
1.config
# 设置和获取配置文件
07 系统方法(D:PHPHOMEwww p5 hinkphphelper.php)
1.Controller # 实例化控制器
2.action # 调用模块的操作方法
3.config # 设置和获取配置
4.dump # 浏览器友好的变量输出
08 配置文件之间的加载顺序
1.优先级 动态配置>模块配置>场景配置>扩展配置>应用配置>惯例配置
2.加载顺序(D:PHPHOMEwww p5 hinkphplibrary hinkApp.php)
惯例配置->应用配置->扩展配置->场景配置->模块配置->动态配置 3.配置文件实现原理 后面加载的数据对前面的数据覆盖
$temp1=array( 'name'=>'LQ6H', 'a'=>'a' ); $temp2=array( 'name'=>'xiaoqiang', 'b'=>'b' ); dump(array_merge($temp1,$temp2));
09 环境变量配置
1. ThinkPHP5.0 支持使用环境变量配置,切记不能使用中文
2.设置环境变量配置
a.打开网站根目录(D:PHPHOMEwww p5) 新建 .env 文件
b.书写环境配置
name=LQ6H age=20 sex=nan [database] type=mysql name=root password=123456
c.读取环境配置
# 命名空间 // 使用系统类 dump( hinkEnv::get('name')); dump( hinkEnv::get('abc','不存在')); # 使用use 导入Env类 // 引入Env类 use hinkEnv; dump(Env::get('age')); #读取数组配置,不能读取整个数组 dump(Env::get('database.name'));
3.如何使用
a.打开配置文件
use hinkEnv; return [ // 应用调试模式 'app_debug'=>Env::get('app_deubg',false), // 应用状态 'app_status'=>Env::get('app_status',''), ];
第四天 TP5.0 路由
01 路由作用
1.简化 URL 地址,方便大家记忆
2.有利于搜索引擎优化
02 入口文件
1.前后台分离
a.在网站 public 目录下(D:PHPHOMEwww p5public) 新建admin.php
// 定义应用目录 define('APP_PATH', __DIR__ . '/../application/'); // 绑定后台 define('BIND_MODULE','admin'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php'; // 关闭 admin 模块的路由 hinkApp::route(false);
2.绑定模块
a.实现功能
index.php 这个入口文件 只能去前台模块
admin.php 这个入口文件 只能去后台模块
b.如何实现 在入口文件中
// 绑定前台 define('BIND_MODULE','index'); // 绑定后台 define('BIND_MODULE','admin');
c.URL 地址发生改变
c1.入口绑定之前
# http://www.tp5.com/admin.php/admin/index/index
模块 控制器 方法
c2.入口绑定之后
# http://www.tp5.com/admin.php/index/index
控制器 方法
3.隐藏入口文件
a.开启 apache 的重写(D:PHPHOMEApache24confhttpd.conf)
在文件的 158 行,去掉前面的 # 注释,开启重写功能 LoadModule rewrite_module modules/mod_rewrite.so
b.设置访问权限(D:PHPHOMEApache24confextrahttpd-vhosts.conf) 将 AllowOverride None 将 None 改为 All
<VirtualHost *:80> DocumentRoot "D:PHPHOMEwww p5public" ServerName www.tp5.com <Directory "D:PHPHOMEwww p5public"> AllowOverride All </Directory> </VirtualHost>
c.入口文件在网站public 目录下(D:PHPHOMEwww p5public) 新建.htaccess 文件 在 TP5 中,已经帮我们新建并配置好文件了
<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>
d.重启服务
e.url地址变化
e1.隐藏之前 # http://www.tp5.com/index.php/Index/test
e2.隐藏之后 # http://www.tp5.com/Index/test
03 TP5.0 路由学习注意
1.支持三种方式的URL 解析规则
2.路由只针对应用,不针对模块,因此路由的设置也是针对应用下面的所有模块
3.如果有些模块不想使用路由,关闭后台模块 (D:PHPHOMEwww p5publicadmin.php) 注:此代码必须写在 加载框架引导文件之后
// 关闭 admin 模块的路由 hinkApp::route(false);
04 路由模式
1.普通模式
a.定义 关闭路由,完全使用默认的 PATH_INFO 方式URL
b.形式 # http://www.tp5.com/admin.php/Index/index
c.如何设置(D:PHPHOMEwww p5applicationconfig.php)
// 是否开启路由 'url_route_on' => false, // 是否强制使用路由 'url_route_must' => false,
2.混合模式
a.定义 开启路由,并使用路由定义+默认 PATH_INFO 方式的混合
b.如何设置
// 是否开启路由 'url_route_on' => true, // 是否强制使用路由 'url_route_must' => false,
3.强制模式
a.定义 开启路由,并设置必须定义路由才能访问
b.如何设置
// 是否开启路由 'url_route_on' => true, // 是否强制使用路由 'url_route_must' => true,
05 设置路由
1.设置路由--动态单个注册
a.设置路由文件 # D:PHPHOMEwww p5application oute.php
b.如何设置
// 引入系统类 use thinkRoute; // 定义路由规则 Route::rule('/','index/index/index'); Route::rule('test','index/index/test');
c.路由的形式
c1.静态地址路由
Route::rule('test','index/index/test');
c2. 给路由带参数 注册带参数路由
http://www.tp5.com/course/1
http://www.tp5.com/index/index/index/id/1
// 带参数路由 Route::rule('course/:id','index/index/course'); Route::rule('time/:year/:month','index/index/shijian');
c3.可选参数路由
// 可选参数 Route::rule('time/:year/[:month]','index/index/shijian');
c4.全动态路由
// 全动态路由 Route::rule(':a/:b','index/index/dongtai');
d.设置请求类型
d1.TP 中请求类型 get,post,put,delete
d2.设置各种请求
// 支持 get请求 Route::rule('type','Index/index/type','get'); Route::get('type','Index/index/type')
支持所有路由 Route::rule('type','Index/index/type','*'); Route::any('type','Index/index/type');
2.设置路由--动态批量注册
a.基本格式
Route::rule([ '路由规则1'=>'路由地址和参数', '路由规则2'=>['路由地址和参数','匹配参数(数组)','变量规则(数组)'] ... ],'','请求类型','匹配参数(数组)','变量规则');
b.使用
Route::rule([ 'test'=>'index/index/test', 'course/:id'=>'index/index/course' ],'','get');
3.设置路由--配置文件批量注册
// 使用配置文件批量注册 return [ 'test'=>'index/index/test', 'course/
06 变量规则
// 变量规则 Route::rule('course/:id','index/index/course','get',[],['id'=>'d{1,3}']);
07 路由参数
08 资源路由
1.资源路由的声明
# Route::resource('blog','index/blog');
2. 会自动注册7个路由规则
后台功能 add页面,展示页面,删除页面,修改页面,修改功能,增加功能
09 快捷路由
1.声明
// 给User控制器设置快捷路由 Route::controller('user','index/User');
2.使用
namespace appindexcontroller; class User { public function getInfo() { } public function getPhone() { } public function postInfo() { } public function putInfo() { } public function deleteInfo() { } }
3.URL 访问
get http://localhost/user/info
get http://localhost/user/phone
post http://localhost/user/info
put http://localhost/user/info
delete http://localhost/user/info
10 URL生成
1.通过系统类
# dump(Url::build('index/index/index'));
2.系统方法
# dump(url('index/index/index'));
第五章 TP5.0 控制器
01 新建控制器(前台模块为例)
1.在前台控制器目录下(D:PHPHOMEwww p5applicationindexcontroller) 新建控制器文件 User.php
2.User.php文件中如何书写
<?php // 声明命名空间 namespace appindexcontroller; // 引入View类 use hinkView; // 引入系统控制器类 use thinkController; // 声明控制器 class User extends Controller { public function index() { return "我是 User 控制器的 index 方法"; } }
3.地址栏访问
# http://www.tp5.com/index.php/Index/User/index
4.注意
a.控制器文件名必须首字母大写,文件名采用驼峰命名
b.控制器名必须跟文件名一一对应
c.命名空间必须和文件名对应
# namespace appindexcontroller;
# D:PHPHOMEwww p5applicationindexcontroller
d.如果控制器名字采用驼峰命名 UserInfo.php,进行url地址访问时必须使用 user_info # http://www.tp5.com/index.php/Index/User_Info/index
02 控制器如何加载页面
1.系统 View 类
// 实例化系统 View 类 //$view=new hinkView(); //return $view>fetch();
// 引入View类 use hinkView; // 使用use $view=new View(); return $view>fetch();
2.系统 Controller 类,需要继承
class User extends Controller // 使用系统控制器方法 return $this->fetch();
3.系统函数
// 使用系统函数 return view();
03 数据输出
1.在应用配置文件中可以设置数据返回格式
// 默认输出类型 'default_return_type' => 'html',
04 控制器的初始化
1.控制器初始化方法必须继承系统控制器
public function _initialize() { echo "我是初始化方法"; }
2.只要调用控制器下的任意方法,都会先找初始化方法
3.控制器初始化方法的使用
a.可以用来提取控制器下公共的代码
b.网站后台
05 前置操作
1.前置方法 把一些公共的设置提取成方法进行调用
2.前置方法必须结合系统控制器
// 前置方法属性 protected $beforeActionList=[ 'one', // 表示这些方法不使用前置方法 two 'two'=>['except'=>'index'], // 仅仅可以让index方法使用 three 'three'=>[
06 页面跳转
1.页面跳转基于系统控制器,类,所以控制器必须继承系统控制器
2.方法所在路径 # D:PHPHOMEwww p5 hinkphplibrary raitscontrollerJump.php
3.跳转方式
a.成功跳转,所用函数为 success
// 登录成功之后跳转 // $this>>success // 跳转地址未设置时,默认返回上一页面 $this>success("登录成功","index/index");
b.失败跳转,所用函数为 error
// 失败之后跳转 $this>error("登录失败");
4.修改成功和失败的模板页面
a.找到默认模板页面(D:PHPHOMEwww p5applicationconfig.php)
// 默认跳转页面对应的模板文件 'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', 'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
b.文件目录
# D:PHPHOMEwww p5 hinkphp pldispatch_jump.tpl
c.跳转方法给模板页面的数据
c1.$code 返回的状态码 成功为1,失败为0
c2.$msg 页面的提示信息
c3.$wait 等待时间
c4.$url 制定跳转页面 默认返回上一个页面
c5.$data 用户返回的数据
d.修改成功和失败页面 在成功失败模板页面进行修改
5.用户自定义页面跳转模板
a.修改配置文件
'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'success.tpl', 'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'error.tpl',
b.在系统模板目录下(D:PHPHOMEwww p5 hinkphp pl) 新建 success.php 和 error.php
07 重定向
1.作用 重定向(Redirect) 就是通过各种方法将各种网络请求重新定个方向转到其他位置
2.使用(D:PHPHOMEwww p5 hinkphplibrary raitscontrollerJump.php)
08 空操作和空控制器
1.空操作
# 主要解决用户恶意的地址栏输入,报错影响交互
// 空操作 public function _empty() { $this>redirect('index/index'); }
2.空控制器
<?php // 声明命名空间 namespace appindexcontroller; use thinkController; // 声明控制器 class Error extends Controller { public function index() { $this>redirect('index/index'); } // 空操作 public function _empty() { $this>redirect('index/index'); } } ?>
09 命名行模式
1.切换到网站的根目录下
2.输入 php think
3.使用
a.创建控制器
# php think make:controller appindexcontrollerGoods
b.创建数据模型
# php think make:controller appindexmodelGoods