博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tp5.0中及其常用方法的一些函数方法(自己看)和技巧(不断添加中)
阅读量:5049 次
发布时间:2019-06-12

本文共 7558 字,大约阅读时间需要 25 分钟。

1.目录结构

2.路由

3..控制器

4.模型写法

5.视图标签

6.数据库操作

7.表单验证

8.分页

---------------------------

1.目录结构

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                 命令行入口文件

2.路由(路由的写法 https://www.kancloud.cn/manual/thinkphp5/118029   )

Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');

例子

Route::rule('new/:id','News/update','POST');

 

 

'test' =>'index/index/show'

加了路由之后控制器可以用url()方法获取路由

echo url('index/index/show');

也就是说,不管test怎么变,只要控制器正确,返回的就是route定义数组的别名.

 

 3.控制器

  3.1)控制器之request对象   

public function show(Request $request)    {        var_dump($request);        var_dump(\request());        Request::instance();    }

其中的常用方法

//thinkphp\library\think\Request.php 基本所有方法        $request->domain();//返回域名        $request->pathinfo();        $request->path();        $request->method();        $request->isGet();        $request->isAjax();        $request->get();//获取get参数 不包含pathinfo变量        $request->param();//pathinfo值和get都传递过来        $request->post();//post值        session('key','value');//开启session 配置文件中开启        $request->session();//session值        cookie('key1','value1');        $request->cookie();        $request->cookie('key1');        $request->param('key1');//页可以直接获取value1        $request->module();//获取模块        $request->controller();//获取控制器        $request->action();//获取操作点        $request->url();        $request->baseUrl();        $request->file();
//input助手函数 thinkphp\helper.php        echo $request->param('name');        $p = 'param';        echo $request->$p('name');        echo input('name');//先去param,再找get post put session cookie server env path file  ...        echo input('post.name',10);//去post值        echo input('session.name',10);//去session值

   3.2)控制器返回值

//更改返回类型        //可以动态的切换控制器的返回类型 -也可以不设置        config::Set('default_return_type','xml');//返回值是xml json 返回值自动转换        //也可以        $data = ['name'=>'thinkphp','url'=>'thinkphp.cn'];     return $data;        // 指定json数据输出        return json(['data'=>$data,'code'=>1,'message'=>'操作完成']);        // 指定xml数据输出        return xml(['data'=>$data,'code'=>1,'message'=>'操作完成']);

 

5.视图 (参考  https://www.kancloud.cn/manual/thinkphp5/118048   )页面引入资源文件(__STATIC__/)

  5.1)渲染模板

namespace app\index\controller;use think\View;class Index {    public function index()    {        $view = new View();        return $view->fetch('index');    }}

  5.2)或者直接使用view助手函数渲染模板输出,例如:

namespace app\index\controller;class Index {    public function index()    {        return view('index');    }}

  5.3)如果继承了think\Controller类的话,可以直接调用think\Viewthink\Request类的方法,例如:

namespace app\index\controller;use think\Controller;class Index extends Controller{    public function index()    {        // 获取包含域名的完整URL地址        $this->assign('domain',$this->request->url(true));        return $this->fetch('index');    }}

 视图实例化渲染:https://www.kancloud.cn/manual/thinkphp5/118113

   5.4)thinkphp模板中的常量 (有些已经失效可以自己定义)

//
默认的模板替换规则:../Public : 会被替换成当前项目的公共模板目录 通常是 / 项目目录 /Tpl/default/Public/__PUBLIC__ :会被替换成当前网站的公共目录 通常是 /Public/__TMPL__ : 会替换成项目的模板目录 通常是 / 项目目录 /Tpl/default/__ROOT__ : 会替换成当前网站的地址(不含域名)__APP__ : 会替换成当前项目的 URL 地址 (不含域名)__URL__ : 会替换成当前模块的 URL 地址(不含域名)__ACTION__ :会替换成当前操作的 URL 地址 (不含域名)__SELF__ : 会替换成当前的页面 URL

还可以通过在项目配置文件中配置TMPL_PARSE_STRING的值来自定义替换规则,如:

TMPL_PARSE_STRING => array(   '__PUBLIC__' => '/Common' ,  // 更改默认的 __PUBLIC__ 替换规则   '__UPLOAD__' => '/Public/Uploads/' ,  // 增加新的上传路径替换规则)

示例:

文件路径:/Home/Tpl/default/User/index.html,代码如下:

__ROOT__代表当前网站的网址

__URL__代表当前模块的URL地址/index.php/User

../Public代表/aoli/Tpl/default/Public

__PUBLIC__代表项目公共文件目录/Public

__TMPL__代表当前项目的模板目录/aoli/Tpl/default/

__APP__代表当前项目的入口文件地址/index.php

__ACTION__代表当前的操作地址/index.php/User/index

__SELF__代表当前URL地址/index.php/User/

__UPLOAD__

http://www.jb51.net/article/54217.htm

http://www.thinkphp.cn/topic/8617.html

 

 4.模型

6.数据库 ( https://www.kancloud.cn/manual/thinkphp5/118058  )

  6.1)基本使用

Db::query('select * from think_user where id=?',[8]);Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);

  6.2)查询构造器

Db::name('user')->where('id',1)->find();Db::name('user')->where('status',1)->select();

使用Query对象或闭包查询

或者使用查询对象进行查询,例如:

$query = new \think\db\Query();$query->table('think_user')->where('status',1);Db::find($query);Db::select($query);

或者直接使用闭包函数查询,例如:

Db::select(function($query){    $query->table('think_user')->where('status',1);});

添加一条数据

$data = ['foo' => 'bar', 'bar' => 'foo'];Db::table('think_user')->insert($data);

添加多条数据

$data = [    ['foo' => 'bar', 'bar' => 'foo'],    ['foo' => 'bar1', 'bar' => 'foo1'],    ['foo' => 'bar2', 'bar' => 'foo2']];Db::name('user')->insertAll($data);

更新数据表中的数据

Db::table('think_user')    ->where('id', 1)    ->update([        'login_time'  => ['exp','now()'],        'login_times' => ['exp','login_times+1'],    ]);

更新某个字段的值:

Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');

删除数据表中的数据

// 根据主键删除Db::table('think_user')->delete(1);Db::table('think_user')->delete([1,2,3]);// 条件删除    Db::table('think_user')->where('id',1)->delete();Db::table('think_user')->where('id','<',10)->delete();

混合查询

$result = Db::table('think_user')->where(function ($query) {    $query->where('id', 1)->whereor('id', 2);})->whereOr(function ($query) {    $query->where('name', 'like', 'think')->whereOr('name', 'like', 'thinkphp');})->select();

查询用到的语法: https://www.kancloud.cn/manual/thinkphp5/135182

 

事务操作  

https://www.kancloud.cn/manual/thinkphp5/139063

// 启动事务Db::startTrans();try{    Db::table('think_user')->find(1);    Db::table('think_user')->delete(1);    // 提交事务    Db::commit();    } catch (\Exception $e) {    // 回滚事务    Db::rollback();}

 

 

7.表单验证

 

 

8.分页

 一个带条件分页

$where = [];        // 查询条件        $keyword = input('keywords');        if($keyword){            $where['orderNumber|groupName'] = ['like',$keyword];//竖线是or的意思,可以看手册        }        // 查询        $list = Db::table("reportform")            ->where($where)            ->order('creatTime desc')            ->paginate(15,false, ['query' => request()->param()]);        // 获取分页显示        $page = $list->render();

 

 

 9.thinkphp的文件处理类

 

 

 

转:https://www.kancloud.cn/manual/thinkphp5

 

转载于:https://www.cnblogs.com/fps2tao/p/8732791.html

你可能感兴趣的文章
【NOIP模拟】密码
查看>>
java容器---------手工实现Linkedlist 链表
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
次序+“选择不重复的记录”(3)——最大记录
查看>>
Codeforces 450 C. Jzzhu and Chocolate
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
ACdream 1115 Salmon And Cat (找规律&amp;&amp;打表)
查看>>
JSON、JSONP、Ajax的区别
查看>>
AngularJS学习篇(一)
查看>>
【转载】 IP实时传输协议RTP/RTCP详解
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
Linux系统的数据写入机制--延迟写入
查看>>
css3动画——基本准则
查看>>
javaweb常识
查看>>
Java注解
查看>>
时间>金钱
查看>>
元数据元素
查看>>