版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ThinkPHP6简介ThinkPHP6简介现代化架构丰富的功能高性能文档丰富社区支持运行环境PHP7.2及以上Windows10及以上/LinuxApache/IIS/Nginx,推荐Apache推荐使用最新版本:WampServer下载与安装Composer中文文档官网地址是:composercreate-projecttopthink/thinktpcomposerupdatetopthink/frameworkThinkPHP6基础目录结构命名规范ThinkPHP6遵循PSR-2命名规范和PSR-4自动加载规范目录和文件函数和类、属性命名常量和配置数据表和字段应用类库/v6_1/kaifaguifan.html例1:snake_case目录例2:application目录例1:User类名例2:get_client_ip函数名例1:APP_PATH常量例2:url_route_onp配制例1:think_user
数据表例2:user_name字段例1:app\index\controller\Index例2:app\index\model\User架构总览MVC设计模式入口文件应用路由容器系统服务控制器操作模型视图模板引擎ThinkPHP6配置配置目录单应用模式多应用模式入口配置ThinkPHP6默认自带的入口文件位于public/index.php多应用模式安装多应用模式扩展自动多应用部署增加应用入口URL访问规则:例1:http://serverName/index.php/admin例2:http://serverName/index.php/shop配置默认应用return[//...其他配置...'default_app'=>'index',//设置默认应用为"index"];http://serverName/admin.php资源配置访问资源文件的URL路径如下。http://localhost/public/static/css/style.csshttp://localhost/public/static/js/common.jshttp://localhost/public/static/img/picture.jpg调试配置ThinkPHP6路由路由概述让URL更加规范和优雅。隐式传入额外请求参数。统一拦截并进行权限检查等操作。绑定请求数据。使用请求缓存。路由中间件支持。例:Route::get('/user/{id}','UserController@show');路由的工作流程路由概念路由特性路由模式强制模式的参数配置如下:'url_route_must'=>true,这种模式下,必须严格给每一个访问地址定义路由规则(包括首页),否则将抛出异常。默认模式的参数配置如下:'url_route_must'=>false,在默认模式下,采用ThinkPHP框架默认的PATH_INFO
模式访问URL,代码如下:http://serverName/index.php/app/controller/action/param/value/...路由定义基本路由定义动态路由定义RESTful路由定义路由分组定义命名路由例:Route::get('user/index','User/index')例:Route::rule('user/:id','User/read')例:Route::resource('blog','Blog')例:Route::group('blog',function(){...})例:Route::rule('user/index','User/index')->name('user_index')路由表达式'blog/:year/[:month]'=>'Blog/archive',//[:month]变量用[]包含起来后,就表示该变量是路由匹配的可选变量规则表达式可选定义表达式完全匹配表达式'new/:cate$'=>'News/category'//开启路由定义的全局完全匹配'route_complete_match'=>true,'/' =>'index', //首页访问路由'my' =>'Member/myinfo', //静态地址路由'blog/:id' =>'Blog/read', //静态地址和动态地址结合'new/:year/:month/:day' =>'News/read', //静态地址和动态地址结合':user/:blog_id' =>'Blog/read', //全动态地址路由地址路由地址定义方式说明:方式1:路由到控制器/操作格式:控制器/操作示例:'index'=>'Index/index'方式2:路由到类的方法格式:\完整类名@动态方法名或者\完整类名::静态方法名示例:'myinfo'=>'\Member\MyInfo@getInfo'方式3:重定向路由格式:Route::redirect('路由表达式','重定向地址')示例:Route::redirect('old-url','/new-url')方式4:路由到模板格式:使用view方法示例:'about'=>function(){returnview('about');}方式5:路由到闭包格式:闭包函数定义(支持参数传入)示例:'hello/:name'=>function($name){return"Hello,$name!";}路由分组Route::group('blog',function(){Route::rule(':id','blog/read');Route::rule(':name','blog/read');})->ext('html')->pattern(['id'=>'\d+','name'=>'\w+']);Route::group(function(){Route::rule('blog/:id','blog/read');Route::rule('blog/:name','blog/read');})->ext('html')->pattern(['id'=>'\d+','name'=>'\w+']);方式一方式二MISS路由全局MISS路由
分组MISS路由return[ 'new/:id' =>'News/read', 'blog/:id' =>['Blog/update',['method'=>'post|put'],['id'=>'\d+']], '__miss__' =>'public/miss',];return[ '[blog]'=>[ 'edit/:id' => ['Blog/edit',['method'=>'get'],['id'=>'\d+']], ':id' => ['Blog/read',['method'=>'get'],['id'=>'\d+']], '__miss__' => 'blog/miss', ], 'new/:id'=>'News/read', '__miss__'=>'public/miss',];URL生成Url::build('地址表达式',['参数'],['URL后缀'],['域名'])url('地址表达式',['参数'],['URL后缀'],['域名'])地址表达式和参数URL后缀添加锚点URL生成方法例:Route::rule('blog/:id','index/blog/read');Url::build('index/blog/read','id=5&name=thinkphp');Url::build('index/blog/read',['id'=>5,'name'=>'thinkphp']);url('index/blog/read','id=5&name=thinkphp');url('index/blog/read',['id'=>5,'name'=>'thinkphp']);/index.php/blog/5/name/thinkphp.html'url_html_suffix'=>'shtml'/index.php/blog/5.shtmlUrl::build('index/blog/read','id=5','shtml');Url::build('index/blog/read#anchor@blog','id=5');/read/id/5.html#anchorThinkPHP6控制器控制器的定义namespaceapp\index\controller;//命名空间classIndex//控制器名称{publicfunctionindex()
//方法名称默认执行{return'index'; //返回字符串作为响应内容}}控制器类定义:控制器概念定义:控制器是MVC(Model-View-Controller)设计模式中的C文件位置:application/index/controller/Index.phpURL与控制器映射访问tp项目下Index控制器下的test方法URL:http://lwww.tp.cc/index/index/hello控制器的初始化namespaceapp\index\controller;useapp\BaseController;
classIndexextendsBaseController{publicfunctioninitialize(){echo'initfunc<br/>';}
publicfunctiontest(){returntestfunc';}}如果访问http://www.tp.cc/Index/test,会输出:initfunctestfunc跳转和重定向跳转和重定向重定向是指向客户端发送一个HTTP状态码,告知客户端去请求另一个URL。例:returnredirect('目标URL')->with('message','操作成功');请求信息Request类静态方法获取请求信息:echo"当前控制器名称是".$request->controller().”<br>”;echo“当前方法名称是".$request->action().”<br>”;echo“当前参数username值是”.$request->param(‘username’).”<br>”;Request类依赖注入获取请求信息publicfunctionxxxxxxxx(Request$request)示例输出假设当前访问的地址是:http://www.tp.cc/Index/index/username/mingrisoft,输出结果如下:当前控制器名称是index当前方法名称是index当前参数username值是mingrisoftusethink\Request;usethink\facade\RequestasReq;echo"当前控制器名称是".Req::controller();echo“当前方法名称是".Req::action();echo“当前参数username值是”.Req::param(‘username’);输入变量方法描述param获取当前请求的变量get获取$_GET变量post获取$_POST变量put获取PUT变量delete获取DELETE变量session获取$_SESSION变量cookie获取$_COOKIE变量request获取$_REQUEST变量server获取$_SERVER变量env获取$_ENV变量route获取路由(包括PATHINFO)变量file获取$_FILES变量变量类型方法描述说明请求类型//是否为GET请求if(Request::isGet())echo"当前为GET请求";//是否为POST请求if(Request::isPost())echo"当前为POST请求";//是否为PUT请求if(Request::isPut())echo"当前为PUT请求";//是否为DELETE请求if(Request::isDelete())echo"当前为DELETE请求";//是否为Ajax请求if(Request::isAjax())echo"当前为Ajax请求";ThinkPHP6数据库数据库的连接return[
‘type’=>‘mysql’,//数据库类型env('DB_TYPE',‘'),
‘dsn’=>‘’,//数据库连接DSN配置
‘hostname’=>‘’,//服务器地址env('DB_HOST',''),'database'=>'thinkphp',//数据库名'username'=>'root',//数据库用户名'password'=>'',//数据库密码'hostport'=>'',//数据库连接端口'params'=>[],//数据库连接参数'charset'=>'utf8',//数据库编码默认采用utf8'prefix'=>'think_',//数据库表前缀'debug'=>false,//数据库调试模式'deploy'=>0,//数据库部署方式:0集中式(单一服务器),1分布式(主从服务器)'rw_separate'=>false,//数据库读写是否分离主从式有效'master_num'=>1,//读写分离后主服务器数量
'slave_no'=>'',//指定从服务器序号'fields_strict'=>true,//是否严格检查字段是否存在];database.php.env数据库连接配制文件基本操作1、查询数据2、添加数据3、更新数据Db::table('think_user')->where('id',1)->find();Db::table('think_user')->insert($data);Db::table('think_user')->update(['name'=>'thinkphp','id'=>1]);基本操作4、删除数据5、查询方法6、原生查询Db::table('think_user')->delete([1,2,3]);Db::table('think_user')->where('name&title','like','%thinkphp')->find();Db::query('select*fromthink_userwhereid=?',[8]);ThinkPHP6模型模型的定义namespaceapp\index\model; usethink\Model;classUserextendsModel{}namespaceapp\index\model;usethink\Model;classUserextendsModel{ protected$pk='uid';}id默认主键为自动识别没有id,设置属性,指定主键模型定义设置数据表namespaceapp\index\model;classUserextends\think\Model{ //设置当前模型对应的完整数据表名称 protected$table='think_user'; //设置当前模型的数据库连接 protected$connection=[ 'type'=> 'mysql', //数据库类型
'hostname'=> '',//服务器地址
'database'=> 'thinkphp', //数据库名
'username'=> 'root', //数据库用户名
'password'=> '', //数据库密码
'charset'=> 'utf8', //数据库编码默认采用utf8
'prefix'=> 'think_', //数据库表前缀
'debug'=> false, //数据库调试模式 ];}模型调用 1、静态调用$user=User::find(1);$user->name='thinkphp';$user->save();2、实例化调用
$user=newUser;$user->saveAll([[‘id=>1’,’name’=>’mingrisoft’]]);
模型初始化namespaceapp\index\model;usethink\Model;classIndexextendsModel{ //自定义初始化 protectedfunctioninitialize() { //需要调用`Model`的`initialize`方法 parent::initialize(); //TODO:自定义的初始化 }}namespaceapp\index\model;usethink\Model;classIndexextendsModel{ //自定义初始化 protectedstaticfunctioninit() { //TODO:自定义的初始化 }}模型基础操作 1、新增$user=newUser;$user->name=user1';$user->email=‘user1@';$user->save();2、更新$user=User::find(7);$user->name=‘user';$user->email=‘user@';$user->save(); 3、删除$user=User::find(4);$user->delete();4、查询$user=User::find(1);echo$user->name;模型事件模型类支持before_delete、after_delete、before_write、after_write、before_update、after_update、before_insert、after_insert事件行为User::event('before_insert',function($user){ if($user->status!=1){returnfalse;}});ThinkPHP6视图视图实例化1、引入think\facade\View;//渲染模板输出returnView('hello',['name'=>'thinkphp']);2、助手函数returnview('hello',['name'=>'thinkphp']);内置模板引擎配置文件'template'=>[ 'type'=> 'Think',//模板引擎类型支持phpthink支持扩展 'view_path'=> './template/',//模板路径 'view_suffix'=> 'html',//模板后缀 'view_depr'=> DS,//模板文件名分隔符 'tpl_begin'=> '//模板引擎普通标签开始标记 'tpl_end'=> '}',//模板引擎普通标签结束标记 'taglib_begin'=> '{',//标签库标签开始标记'taglib_end'=>'}',//标签库标签结束标记],调用engine方法初始化return$this->engine('php')->fetch();thinkTemplate的安装composerrequiretopthink/think-view在配置目录的view.php文件中进行模板引擎相关参数的配置模板赋值1、assign方法namespaceindex\app\controller;usethink\facade\View;classIndexextends\think\Controller{publicfunctionindex(){//模板变量赋值View::assign('name','ThinkPHP');View::assign('email','thinkphp@');//或者批量赋值View::assign(['name'=>'ThinkPHP','email'=>'thinkphp@']);//模板输出returnView::fetch('index');}}2、助手函数returnview('index',['name'=>'ThinkPHP','email'=>'thinkphp@']);模板渲染1、不带任何参数returnView::fetch();2、[模块@][控制器/][操作]returnView::fetch('admin@member/edit');3、完整的模板文件名returnView::fetch(APP_PATH.request()>module().'/view/public/header.html');例:app/Index/view/index.html例:app/admin/view/member/edit.html例:app/admin/view/public/header.html模板输出替换namespaceindex\app\controller;classIndexextends\think\Controller{ publicfunctionindex() { View::assign('name','thinkphp'); returnView::fetch('index',[],['__PUBLIC__'=>'/public/']); }}当前模块替换'view_replace_str'=>[ '__PUBLIC__'=>'/public/', '__ROOT__'=>'/',]全局替换ThinkPHP6模板模板特点支持XML标签库和普通标签的混合定义;支持直接使用PHP代码书写;支持文件包含;支持多级标签嵌套;支持布局模板功能;一次编译多次运行,编译和运行效率非常高;模板文件和布局模板更新,自动更新模板缓存;系统变量无须赋值直接输出;支持多维数组的快速输出;支持模板变量的默认值;支持页面代码去除HTML空白;支持变量组合调节器和格式化功能;允许定义模板禁用函数和禁用PHP语法;通过标签库方式扩展。模板标签1、普通标签'template'=>['type'=> 'think',//模板引擎'tpl_begin'=>'<{',//普通标签开始标记'tpl_end' =>'}>'//普通标签结束标记
],普通标签的定界符被修改了,原来的{$name}和{$}必须使用<{$name}>和<{$}>才能生效.。2、标签库标签'template'=>['type'=>'think', //模板引擎
'taglib_begin'=>'<', //标签库标签开始标签
'taglib_end'=>'>', //标签库标签结束标记],<eqname="name"value="value">
相等<else/>
不相等</eq>使用函数模板输出变量使用函数{$|md5}函数有多个参数{$|substr=0,3}内置标签标签名作
用包含属性include包含外部模板文件(闭合)fileload导入资源文件(闭合包括jscssimport别名)file,href,type,value,basepathvolist循环数组数据输出name,id,offset,length,key,modforeach数组或对象遍历输出name,item,keyforFor循环数据输出name,from,to,before,stepswitch分支判断输出namecase分支判断输出(必须和switch配套使用)value,breakdefault默认情况输出(闭合必须和switch配套使用)无compare比较输出(包括eqneqltgtegteltheqnheq等别名)name,value,typerange范围判断输出(包括innotinbetweennotbetween别名)name,value,typepresent判断是否赋值namenotpresent判断是否尚未赋值nameempty判断数据是否为空namenotempty判断数据是否不为空namedefined判断常量是否定义namenotdefined判断常量是否未定义namedefine常量定义(闭合)name,valueas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 舌癌术后饮食宣教要点
- 煤炭运输协议2026年环保条款
- T-CIRA 68-2024 用加速器液体靶生产的68GaCl3溶液
- 高三试题及答案资源
- 自考汉语言题库及答案
- 畜牧养殖技术奶牛饲养试题及解析
- 车工证题库及答案
- 基础物理试卷及详解
- 初中历史中国古代史题目及解析
- 金属表面肉眼看不见的有害物质
- 人教版小学二年级美术下册第四单元《长大以后》每节课教案汇编(含四个教案)
- 2026年2建法规试题及答案
- 2026年档案管理职称通关练习题库附参考答案详解【考试直接用】
- (2026版)医疗器械生产质量管理规范课件
- 2026年超星尔雅劳动教育类通关考试题库(突破训练)附答案详解
- 义务教育道德与法治课程标准(2025修订版)解读-红色-党政风格
- 2026年振动监测与故障诊断技术
- 2026年全国爱国卫生月主题:宜居靓家园、健康新生活
- 2025年职业指导师考试题库
- 多重耐药菌感染防控措施试题含答案
- DB13T 6218-2025爆破行业安全生产风险分级管控与隐患排查治理规范
评论
0/150
提交评论