
ThinkPHP3.2/5.0/6.0
tp干货
Jason Ho
分享技术,深度学习,社区中活跃的一份子
展开
-
tp5注册swoole 自定义命令行,TP5使用swoole做异步任务示例代码
根据tp 介绍:https://www.kancloud.cn/manual/thinkphp5/235129我们注册一个swoole的自定义命令php think swoser服务端代码SwooleServ .php:<?php/** * swoole通用服务 */namespace app\home\swoole;use app\console\common\ServerCommand;use app\home\controller\AmazonExport;use原创 2021-03-16 14:43:10 · 581 阅读 · 0 评论 -
Redis 操作类
<?php/** * Redis 操作类 * 可以使用redis的所有数据类型,而tp5仅可使用string类型+ * 字符串(String) 哈希(Hash) 列表(List) 集合(Set) 有序集合(sorted set) * Created by PhpStorm. * User: Administrator * Date: 2020/10/21 * Time: 10:45 */namespace app\common;use think\Config;cl原创 2020-11-12 18:07:11 · 222 阅读 · 0 评论 -
config::class 在tp5中的使用
使用composer安装以下扩展:原创 2020-11-17 16:25:26 · 191 阅读 · 0 评论 -
TP5多模块下,路由的分组设置方式
在app下 的route.php中如下定义:<?phprequire 'route/admin/route.php';require 'route/home/route.php';require 'route/designer/route.php';require 'route/index/route.php';然后在app下创建目录route:如下路由设置:<?php/** * Created by PhpStorm. * User: Administrator原创 2020-10-19 16:01:36 · 2389 阅读 · 0 评论 -
TP5的自动过滤方法
'default_filter' => 'htmlspecialchars,strip_tags,stripslashes,htmlentities',htmlspecialchars:防XSS攻击,尖括号等转义过滤strip_tags:剥去字符串中的 HTML 标签原创 2020-10-15 14:01:25 · 2311 阅读 · 0 评论 -
TP的where数组搜索写法
in 写法:$where_data['id'] = ['in',$child_ids];Like 写法: if($user_Name){ $where_data['username|realname'] = ['like',"%".$user_Name."%"];}= 写法:$where_data['id'] = 1;原创 2020-08-24 17:38:55 · 731 阅读 · 0 评论 -
LNMP 部署tp项目隐藏入口文件index.php
进入如图操作:加入这行:if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last;}或者: location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; } }如果报错: [emerg] duplicate location “/” in /usr/local/ngi原创 2020-08-01 12:02:09 · 734 阅读 · 0 评论 -
Lnmp部署tp5项目报错:require(): open_basedir restriction in effect. File(/home/wwwroot/api.321.design/think
如果是lnmp环境的话:修改fastcgi的配置文件 /usr/local/nginx/conf/fastcgi.conf将最后一行改为:(加上…/即可)原创 2020-08-01 11:56:51 · 636 阅读 · 0 评论 -
TP中的场景验证一定要小写,即场景名字要全部小写,否则会找不到验证场景
例如我定义的一个验证类:<?phpnamespace app\admin\validate;use think\Validate;class Config extends Validate{ /** * 定义验证规则 * 格式:'字段名' => ['规则1','规则2'...] * * @var array */ protected $rule = [ 'site_name' => 'require原创 2020-06-02 14:49:25 · 343 阅读 · 0 评论 -
API接口通用返回类,TP通用
<?php/** * API接口返回类 */namespace app\admin\controller;use think\exception\HttpResponseException;use think\Response;class ApiResponse{ public static $successCode = 200; public static $errorCode = 400; //构造函数 private function原创 2020-06-01 11:16:03 · 838 阅读 · 0 评论 -
tp模版中的多层循环输出
菜单输出示例: {volist name="menus" id="vo" } <li class=""> <a href="{:url($vo['url'])}"><i class="fa fa-th-large"></i> <span class="nav-label">{$vo.name}</span> <span class="fa arrow"></span></a&g原创 2020-05-25 13:44:21 · 627 阅读 · 0 评论 -
tp6使用workerman发送定时任务,定时执行某个逻辑
在后台运行上代码:<?phpdeclare(strict_types=1);namespace app\socketio\controller;use think\Request;use Workerman\Lib\Timer;use think\worker\Server;class Settings extends Server{ protected ...原创 2019-12-07 15:40:43 · 9502 阅读 · 1 评论 -
TP6使用request()获取参数的几种方法
第一种:获取全部参数的值request()->param()** 第二种:获取排除某些字段的值,即获取其他值**request()->except(['serverToken','loginToken']);第三种:获取指定字段的值,即获取本次指定的值request()->only(['serverToken','loginToken']);...原创 2019-11-28 14:34:58 · 15736 阅读 · 0 评论 -
TP6打印sql语句的几种方法
方法一:在链式写法的语句后面执行以下语句: echo $Db->getLastSql();exit;方法二:在链式写法的中间添加fetchSql: echo $returnRes = $Db->fetchSql()->select()注意:以上语句需要echo 并且fetchSql必须在select之前。原因是select直接返回了一个数据集。而其他链式写...原创 2019-11-26 10:35:30 · 16305 阅读 · 0 评论 -
TP6数据集转数组的方法:九阴真经之collapse式
使用Arr::collapse($array),这种方法可以将Collection数据集转化为数组。例如我们现在有这样一个未经过滤的数据集:array:4 [ "code" => "B0cloudServiceIndex" "msg" => "查询,成功。" "data" => Collection {#119 #items: array:10 [ ...原创 2019-11-22 10:11:26 · 2580 阅读 · 0 评论 -
tp6报错:[8] ErrorException in Builder.php line 490 未定义数组下标: 1
[8] ErrorException in Builder.php line 490未定义数组下标: 1原因是我们查询的时候给定的是一个数组,需要带上数组的下标。例如: $returnRes = $Db->limit($page_, $bars)->whereSecretkey(['版权'])->select(); 以上情况会报错。换种写法: ...原创 2019-11-21 16:05:09 · 3813 阅读 · 0 评论 -
tp6数组与对象的相互转换
在tp6中可以对结果集进行数组的转换,例如使用toArray: $returnRes = $Db->limit($page_, $bars)->select()->toArray();这种方式可以很直观的获得我们想要的数组:array:4 [▼ "code" => "B0cloudServiceIndex" "msg" => "查询,成功。" "d...原创 2019-11-21 15:52:34 · 4603 阅读 · 0 评论 -
tp6数据库帅炸天的新玩法-call方法调用示例
在tp6中,你还在用常用的链式方式操作数据库吗?下面介绍一种非主流的链式操作,保证让你的代码与别人与众不同,而别人又不知道你是怎么实现的,是不是很厉害!在tp6的核心文件BaseQuery.php中给我们装载了一个call方法,如图上代码:/** * 利用__call方法实现一些特殊的Model方法 * @access public * @param string...原创 2019-11-21 10:00:14 · 1797 阅读 · 0 评论 -
简述TP6中的超级函数app()
tp6中的助手函数app(),是一个包含极广,涵盖极深,作用巨大的助手函数,他可以调用很多方法,也是很多助手函数 的集合。首先这是在helper.php中定义的一个助手函数,我们来看一下:if (!function_exists('app')) { /** * 快速获取容器中的实例 支持依赖注入 * @param string $name 类名或标识 ...原创 2019-11-20 19:20:38 · 5404 阅读 · 0 评论 -
TP6验证器的使用示例及正确验证数据
假如我们有一个Settings类,我们需要对表单提交的数据进行有效验证。先写一个数据验证方法:/** * 验证器 * @param $param array|object 验证的数据 * @param $action string 方法名 * @return bool bool */ private funct...原创 2019-11-20 10:02:16 · 5638 阅读 · 0 评论 -
tp6中的依赖注入
容器是用来更方便的管理类依赖及运行依赖注入的工具。依赖注入其实本质上是指在构造函数中对其他需要使用的类迅速实例化。依赖注入的类统一由容器进行管理,你可以随时绑定类到容器中,支持多种绑定方式。例如我们有个 Settings类,现在绑定到容器中 // 绑定类库标识bind('settings','app\admin\controller\Settings');halt(app('se...原创 2019-11-08 11:24:18 · 2406 阅读 · 0 评论 -
TP6新函数的举例及用法展示
1、request()->route() #获取路由参数路由设置:请求方式:2、request()->time() #获取请求时间,即当前时间戳4、Db::name(去前缀的表名)->getConfig() # 获取数据库连接信息...原创 2019-11-08 09:47:53 · 1813 阅读 · 0 评论 -
tp6报错: [0] InvalidArgumentException in Container.php line 467
tp6报错: InvalidArgumentException in Container.php line 467方法参数错误:status出现此错误的原因是,参数错误,不支持这样的参数写法。例如下面类的构造函数<?php#创建:php think make:controller admin@Settingsdeclare(strict_types=1);namespace ...原创 2019-11-07 15:57:40 · 2321 阅读 · 0 评论 -
TP6获取控制器名,方法名
直接使用下面的方法:use app\Request;Request()->controller() //获取控制器名Request()->action() //获取方法名或使用下面的方式$request= \think\Request::instance();$module = $request->module();//模块名$controller = $req...原创 2019-11-05 15:09:13 · 9615 阅读 · 3 评论 -
TP6助手函数使用示例
1.app()->getBasePath() 打印出是app目录G:\WWW\tp_6_0reconstruction\app\原创 2019-10-30 16:57:39 · 3102 阅读 · 0 评论 -
TP6新函数contains与preg_match的比较用法
在tp6中有常用的一些扩展类库,比如str引用方法:use think\helper\Str;看这个函数:// 检查字符串中是否包含某些字符串Str::contains($haystack, $needles)举例:#如果状态存在,则执行了搜索 if ( Str::contains($statusData, (string) $status) ){ ...原创 2019-10-30 15:40:45 · 696 阅读 · 0 评论 -
TP6批量删除和更新数据
支持对数据集的数据进行批量删除和更新操作,例如:$list = User::where('status', 1)->select();$list->update(['name' => 'php']);$list = User::where('status', 1)->select();$list->delete();...原创 2019-10-30 10:47:27 · 4443 阅读 · 0 评论 -
TP6验证规则rule写法:结束时间大于开始时间
在验证类中声明:gt:upgrade_startprotected $rule = [ 'application_ids' => 'require', 'upgrade_start' => 'require|dateFormat:Y-m-d H:i:s', 'upgrade_end' => 'require|dateFormat...原创 2019-10-29 12:20:14 · 4813 阅读 · 0 评论 -
TP6开启调试模式,精确定位到文件和行数
1.首先在根目录下的.example.env中定义:2.其次在config/app.php中将show_error_msg =>true ,如果是false,就改为true。3.设置后调试模式即打开了。如果只是显示某个错误,但不显示具体的文件和行数,那么就把根目录下的.example.env直接改名为.env。然后把数据库连接重新设置一下。再次调试如果出现如下界面,则说明详细的调...原创 2019-10-29 10:54:04 · 4778 阅读 · 0 评论 -
TP6中composer常用命令的使用
1、创建中间件:php think make:middleware /admin/Upgrade/admin/Upgrade 为admin目录下创建Upgrade.php文件的中间件原创 2019-10-28 12:11:03 · 1729 阅读 · 0 评论 -
where方法
where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持的变量类型包括字符串、数组和闭包。和where方法相同用法的方法还包括whereOr、whereIn等一系列快捷查询方法,下面仅以where为例说明用法。表达式查询表达式查询是官方推荐...原创 2019-10-23 12:09:24 · 1384 阅读 · 0 评论 -
findOrEmpty函数用法
findOrEmpty方法在查询数据不存在的时候返回空数组。查询单个数据查询单个数据使用find方法:// table方法必须指定完整的数据表名Db::table(‘think_user’)->where(‘id’, 1)->find();复制最终生成的SQL语句可能是:SELECT * FROM think_user WHERE id = 1 LIMIT 1find...原创 2019-10-23 11:50:30 · 2993 阅读 · 0 评论 -
tp6新特性综述
1、新增类的返回类型说明:2、实例类的新写法:原创 2019-10-23 10:57:00 · 2023 阅读 · 1 评论 -
TP6报错:当前访问路由未定义或不匹配
在浏览器中运行http://hml.tp6.com/admin/getlog报错:当前访问路由未定义或不匹配已设置过路由:原因:当前访问方式是post,在浏览器中无法模拟访问,必须在apipost中访问。如图:访问成功...原创 2019-10-21 18:10:13 · 11576 阅读 · 0 评论 -
Thinkphp6.0/TP6框架中新增函数的解释及用法
dd():打印并截断。dump() :打印。原创 2019-10-11 14:17:33 · 10748 阅读 · 4 评论 -
thinkphp项目域名配置
请注意thinkPHP的项目地址首页为:G:\WWW\api.hml.com\public请注意是根目录下 public,否则项目将会报莫名其妙的错误原创 2019-09-17 11:37:12 · 443 阅读 · 0 评论 -
thinkPHP6(TP6)的安装及使用
ThinkPHP6.0在5.1的基础上对底层架构做了进一步的精简和统一,引入了一些新特性。在www目录下执行:composer create-project topthink/think tp 6.0.*-dev根据网速可能需要10分钟左右才能下载完成。可以先去开个会后者干点其他的。对以上的解释:将tp6 安装到名字为tp的目录里面。安装完成后在www目录下生成了一个tp文件。进...原创 2019-09-26 14:24:05 · 18451 阅读 · 3 评论