**Thinkphp5.1**是国内顶级的php框架之一,初学入坑必备

## 通过composer安装TP5框架

~~~

composer create-project topthink/think tp5

~~~

## URL解析

serverName/index.php/模块/控制器/操作/参数

模块在application文件夹下面 默认有index文件夹(模块为index)

index模块下面有:

控制器 controller 文件夹 默认是 Index.php (首字母必须大写)

控制器里面有操作的方法 index()

```

public function index($id){

return $id;

}```

方法里面带参数 $id

参数可以带默认值

```

public function hello($name='laowang'){

return "hello" . $name;

}```

访问URL必须带上参数名:name/xiaobai就能打印,如果没有默认则访问 hello xiaobai

## 模块设计

多模块设计:

所有模块命名空间以app作为根命名空间

```

application

module1

common.php模块函数文件

config配置目录(可选)

controller控制器(必须)

model模型(可选)

view视图(可选)```

如果只有一个模块时候,可以绑定这个模块:

public/index.php追加方法:

绑定模块、控制器 test/index

``Container::get('app')->bind('test')->run->send();``

其他模块就无法访问

config目录下的app.php

可以设置空模块

'empty_module' => 'index'

*****

单模块设计:

config目录下的app.php设置

'app_multi_module'=> false;//支持多模块改为false

控制器+操作

在application下面可以不存在模块文件夹,直接写控制器 controller

环境变量Env

获取环境变量:应用目录

return Env::get('app_path');

*****

## 控制器说明:

### 1,控制器定义

类名和文件名大小写保持一致,才用驼峰式命名,首字母大写

继承Controller基类,可以调用父类的方法,但不是必须的

假如命名有两个字母组成,例如HelloWorld,访问时候用_关联访问:hello_world

config目录下的app.php配置文件可以关闭URL自动转换:

'url_convert'=>false;

*****

改变根命名空间方法:由app改成其他名称

Env全局配置

根目录添加.env文件

app_namespace=application

*****

### 2,控制器渲染输出

1,return ,相当于echo ,输出的是字符串

2, 使用json输出 ,json()函数

```

$data= array('a'=>1,'b'=>2,'c'=>3);

return json($data);

```

3,view 输出模板

```

public function abc(){

return view();

}```

要求在模块里面创建view文件夹,

里面对应建立相关控制器文件夹 (例如test),

里面建立相关方法名称(abc)的html文件 abc.html

config目录下的app.php配置文件可以控制默认输出类型:

'default_return_type' => 'html';默认是html(文本)

'default_ajax_return_type' => 'json';

一般来说,正常页面都是html输出,用于模板。AJAX默认为JSON

如果继承了基类控制器,可以定义控制器初始化方法:initialize();

//初始化,必须执行的方法

protected function initialize(){

//只支持输出(echo),不支持返回(return)

echo "init";

}

*****

## 控制器操作

前置操作:

继承Controller类后可以设置一个$beforeActionList 属性来创建前置方法:

//里面是写方法名 except是指定不调用哪个方法; only 是指定调用哪几个方法

```

protected $beforeActionList= [

'first',

'second'=>['except'=>'one'],

'third'=>['only'=>'one,two'],

];

protected function first(){

echo "first
";

}```

*****

跳转和重定向

```

protected $flag =false;

public function index(){

if($this->flag){

//如果不指定URL ,则返回 $_SERVER['HTTP_REFEER']

this->success('注册成功','../');

}else{

this->error("失败");

}

} ```

跳转默认模板文件

thinkphp/tpl/dispatch_jump.tpl

'dispatch_success_tmpl' => Env::get('think_path');

*****

空方法与空控制器(访问不存在时不报错)

默认空方法

```

public function _empty($name){

return "此方法不存在" .$name;

}

```

默认空控制器

在controoler 里创建Error.php

```

class Error{

public function index(Request $request){

return "此控制器不存在".$request->controller();

}

}

```

app.php配置文件修改默认空控制器

'empty_controller' => 'Error'

*****

##

## 数据库操作

配置文件在config/database.php

```

use think/Db;

public function getNoModelData(){

//table需要加前缀 ; name不需要加前缀

//$data = Db::table('完整表名')->select();

$data = Db::name('表名')->select();

return json($data);

}```

*****

定义Mopdel:

在模型里面新建 model 文件夹;并且创建与数据表名一致的php文件:User.php

```

namespace app\model;

use think\Model;

class user extends Model{

}

```

*****

在控制器里面使用

```

use app\index\model\User;

public function getModelData(){

$data= User::select();

return json($data);

}

```

*****

建议调试时候打开Trace

配置文件app.php

'app_trace' = true;

右下角调试图标里面的SQL可以看到完整的sql语句

*****

### 查询方法:

1. 查询一条数据: Db::name('表名')->find()【LIMIT 1】

2. 查看最后执行sql: Db::getLastSql();

3. 查询条件: Db::name('表名')->where('id',10)->find();

5. 没有查询到值会返回null

6. 没有查询到数据时返回异常: Db::name('表名')->where('id',10)->findOrFail();

7. 没有查询到数据时返回空数组:

8. Db::name('表名')->where('id',10)->findOrEmpty();

10. 查询多条数据: Db::name('表名')->select()

11. 没有查询到数据时返回异常:

12. Db::name('表名')->where('id',10)->selectOrFail();

14. 查询指定字段单个值:Db::name('表名')->where('id',10)->value('username');

16. 查询指定列多个:Db::name('表名')->column('username');

17. 指定id作为索引:Db::name('表名')->column('username','id');

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

### 新增insert()

```

$data=[

"name"=>"wang",

"age"=>"32"

];

$flag = Db::name('表名')->insert($data);

if($flag) return "success";

//获取新增的id

return Db::insertGetId(); ```

### 批量新增 insertAll()

###

```

$dataall=[

[

"name"=>"wang",

"age"=>"32"

],

[

"name"=>"li",

"age"=>"27"

]

];

Db::name('表名')->insertAll($data);```

*****

### 修改 update()

###

//批量修改

```

$data=[

"name"=>"laowang"

];

$update= Db::name('表名')->where('id',10)->update($data);

return $update;```

增值 inc() 参数1:字段名;参数2,数量

Db::name('表名')->inc('字段名',1)->where('id',10)->update($data);

减值 dec()参数1:字段名;参数2,数量

Db::name('表名')->dec('字段名',1)->where('id',10)->update($data);

字段使用mysql函数 exp() 参数1:字段名;参数2,方法

Db::name('表名')->exp('email','UPPER(email)')->where('id',10)->update($data);

### raw() 方法修改更新:

```

$data = [

'name' => 'wang',

'email' => Db::raw('UPPER(email)'),

'price' => Db::raw('price - 3'),

'id'=> 10

];

Db::name('表名')->update($data);```

//修改单个字段 setField()

$update= Db::name('表名')->where('id',10)->setField('name','老王');

*****

### 删除 delete()

//删除单条

Db::name('表名')->delete(10);

//删除多条

Db::name('表名')->delete([1,2,3,4]);

//根据条件删除

Db::name('表名')->where('id',10)->delete();

//全部删除

Db::name('表名')->delete(true);

*****

### 比较查询

= 、<> 、 > 、 <

等于、不等于、大于、小于

Db::name('表名')->where('id','<>',10)->select();

###

### 区间查询

like

Db::name('表名')->where('name','like','wang%')->select();

支持数组传递多个值:

Db::name('表名')->where('name','like',['wang%','li%'],'or')->select();

select * from 表名 where('name' like 'wang% or 'name' like 'li%')

*****

whereLike()

Db::name('表名')->whereLike('name','wang%')->select();

whereNoLike()

Db::name('表名')->whereNoLike('name','wang%')->select();

*****

between 区间段从多少到多少

Db::name('表名')->whereLike('id','between','19,25')->select();

Db::name('表名')->whereLike('id','between',[19,25])->select();

Db::name('表名')->wherebetween('id',[19,25])->select();

//区间段不在从多少到多少

Db::name('表名')->whereNotbetween('id',[19,25])->select();

*****

in 包含多少

Db::name('表名')->where('id','in','19,20,25'])->select();

Db::name('表名')->whereIn('id','19,20,25'])->select();

//不包含多少

Db::name('表名')->whereNotIn('id','in','19,20,25'])->select();

*****

null 查询为null的数据 参数:字段名

Db::name('表名')->where('uid','null')->select();

Db::name('表名')->whereNull('uid')->select();

notnull 查询不为null的数据 参数:字段名

Db::name('表名')->where('uid','not null')->select();

Db::name('表名')->whereNotNull('uid')->select();

*****

自定义字段后的SQL exp

Db::name('表名')->where('id','exp','In(1,2,3)')->select();

Db::name('表名')->whereExp('id','In(1,2,3)')->select();

*****

### 时间查询

操作: >、=、 <=

Db::name('表名')->where('create_time','> time','2019-01-01')->select();

Db::name('表名')->whereTime('create_time','>','2019-01-01')->select();

*****

###

### 区间查询

Db::name('表名')->where('create_time','between time',['2019-01-01','2019-10-30'])->select();

Db::name('表名')->whereBetween('create_time',['2019-01-01','2019-10-30'])->select();

//查询可以当天 whereBetweenTime: 当天查询:一个参数; 区间查询: 两个参数

Db::name('表名')->whereBetweenTime('create_time','2019-01-01','2019-10-30')->select();

php5框架,Thinkphp5.1框架相关推荐

  1. php-人员权限管理源码,基于ThinkPHP5+ACE框架开发的响应式通用后台权限管理系统PHP源码|响应式轻量级企业网站管理系统...

    源码介绍 基于ThinkPHP5+ACE框架开发的响应式通用后台权限管理系统PHP源码是一款响应式轻量级企业网站管理系统,采用ThinkPHP5.0.10+国外ACE1.40的UI模板的后台内容管理框 ...

  2. 人事档案管理系统源码 v5.0.0(Thinkphp5.0框架)

    [实例简介]人事档案管理系统 安装说明: 1.导入根目录下的default.sql数据库,test.sql为测试数据库 2.修改数据库配置文件 根目录下application/database.php ...

  3. 《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——3.3 微信开发者中心...

    本节书摘来自华章计算机<微信公众平台开发:从零基础到ThinkPHP5高性能框架实践>一书中的第3章,第3.3节,作者 方倍工作室,更多章节内容可以访问云栖社区"华章计算机&qu ...

  4. Jshop小程序商城,小程序端。后台采用Thinkphp5.1框架开发

    简介: Jshop小程序商城,是一款开源的电商系统,为中小企业提供最佳的移动电子商务解决方案.后台采用Thinkphp5.1框架开发,执行效率.扩展性.稳定性值得信赖,前台H5采用VUE开发,增加用户 ...

  5. php异业联盟平台源码,基于ThinkPHP5.1框架开发的B2C在线商城系统PHP源码

    会员优惠 会员优惠 月费会员8折.年费会员5折.永久会员2折 源码介绍 基于ThinkPHP5.1框架开发的B2C在线商城系统PHP源码,支持WAP手机端+微信小程序+支付宝小程序+多种支付方式! 这 ...

  6. php 框架 容器,thinkphp5.1框架容器与依赖注入实例分析

    本文实例讲述了thinkphp5.1框架容器与依赖注入.分享给大家供大家参考,具体如下: 容器----/thinkphp/library/think/Container.php 依赖注入:将对象类型的 ...

  7. 开源商城WSTMart升级thinkphp5.1框架实践

    thinkhp5.0日趋稳定之后,thinkphp官方又马不停蹄的开展了5.1版本的更新迭代.作为技术人,一向是喜欢尝新,既然5.1出来了,赶紧入手了解了解下. 首先打开文档看看开发目录有没有变化,希 ...

  8. 《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——1.2 微信公众账号注册...

    本节书摘来自华章计算机<微信公众平台开发:从零基础到ThinkPHP5高性能框架实践>一书中的第1章,第1.2节,作者 方倍工作室,更多章节内容可以访问云栖社区"华章计算机&qu ...

  9. 《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——1.3 微信公众平台的使用...

    本节书摘来自华章计算机<微信公众平台开发:从零基础到ThinkPHP5高性能框架实践>一书中的第1章,第1.3节,作者 方倍工作室,更多章节内容可以访问云栖社区"华章计算机&qu ...

最新文章

  1. 统计分析SQL Server Profiler 跟踪的SQL
  2. 【数据结构与算法】之判断一个整数是否是 4 的幂次方的高逼格算法
  3. 一张图理解buffer与cache
  4. 用示例说明BitMap索引的效率要优于B-Tree索引
  5. Foxmail安装以及使用
  6. linux防火墙测试,构建基于ipchains的Linux防火墙
  7. wordpress 运行_如何为您的教室设置和运行WordPress
  8. TVP5158的多路复用技术
  9. java Hibernate
  10. MySQL中的联合索引
  11. 1122. 数组的相对排序
  12. myeclipse 配置 SVN
  13. Python 爬虫之初体验(实习僧)
  14. 解决底部横杠遮挡问题(兼容苹果手机底部)
  15. 机器学习6:——Pandas——6:高级处理3:数据合并
  16. CBLUE-阿里天池中文医疗NLP打榜
  17. 低通滤波器 截止频率 学习笔记
  18. 为什么GPU训练网络还不如CPU快
  19. JS—随机三个0-9不重复的随机数
  20. Scrum Master Mock Test (1)

热门文章

  1. 从 MySQL 5.6 升级到 MySQL 8.0,Facebook 付出了什么代价?
  2. 字节跳动辟谣“出售AI技术”和“成立打车项目”;GitHub 因代码版权问题遭抵制;贝佐斯正式卸任亚马逊 CEO|极客头条...
  3. 成为埃森哲阿里巴巴事业部“创始成员”
  4. “内”忧“外”患,3 万台 Mac 有危险!
  5. 中国首个芯片大学最快于本月底在南京挂牌;​华为方舟编译器正式支持 C 语言;Ora2Pg v21.0 发布|极客头条
  6. 英特尔、阿里巴巴全方位深化技术创新,共同引领数智未来
  7. 免费开源:人人必备的数据分析技能
  8. Go 远超 Python,机器学习人才极度稀缺,全球 16,655 位程序员告诉你这些真相!...
  9. Facebook 与 Twitter 再曝漏洞!用户数据再次被共享?
  10. 开启手机新时代,智领5G未来:中国电信首款5G定制高端机震撼登场