thinkphp
RainSerein
这个作者很懒,什么都没留下…
展开
-
php中使用最大余额法解决百分比计算相加不等于100%的问题
在开发项目的过程中有时候需要进行计算百分比,例如计算饼状图百分比。有时候在计算的过程中常规四舍五入计算会发生所有计算的值相加不等于100%的情况。if(!/*** 最大余额法,解决百分比计算相加不等于100%(扇形/饼图百分比使用的此算法)* @param array $valueList 二维数组 [['value' => 1],['value' => 2],['value' => 3]]* @param string $contKey 要统计的字段。原创 2023-01-30 16:57:36 · 1231 阅读 · 0 评论 -
php中分层数据转树结构(数据不去重)并且带有level层级
在项目开发的过程中有时候需要对数据进行数据转换,这里介绍一种对层级数据转换为树结构数据并且不对重复数据进行去重,并且带有level层级字段。if(!/*** 分层数据转树结构(不去重)并且带有level* @param [type] $data 列表数据* @param string $child 子级* @param integer $pid 父级id* @param integer $level 层级} }使用方法直接进行调用即可,id和pid表示父子级关系。原创 2023-01-30 16:38:15 · 197 阅读 · 0 评论 -
在php的开发环境中如何调取WebService?
一.前言:大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分。但是不得不承认的是WebService真的是一门新兴和有前途的技术,那么WebService到底是什么?何时应该用? 当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种是基于浏览器的富客户端应用程序(RIA),当然后一种技术相对来说更加的时髦一些(如现在很流行的Html5技术),这里主原创 2022-05-17 16:46:38 · 1405 阅读 · 0 评论 -
Thinkphp5中一个字段对应多个模糊查询
前言最近在开发项目的时候遇到过一个查询条件:需要对一个字段进行多个模糊查询。解决办法 public function getGroupUser($title) { //多个where条件查询 $condition = ['建设单位','监理单位','数字化单位']; $where_supervisor['title'] = array('or'); foreach ($condition as $value) {原创 2021-06-01 15:45:13 · 728 阅读 · 0 评论 -
Thinkphp5中的钩子和行为
前言钩子和行为钩子相当于一个插件,在某些执行顺序上插入进去。行为可以在写app 接口中对所有请求执行到控制器前 执行登录用户的权限判断、登录token验证、发送websocket推送等,这样就不用在每个接口中判断了。注意事项:1.触发行为的关键方法是 Hook 类中的 listen 方法,它通过遍历某个行为标签下的所有行为,依次实例化并调用 run 方法2. listen 方法中,如果之前在配置文件中开启了 DEBUG 模式,则它会生成日志记录你的行为,这里面牵涉到很多的 IO 操作,所以你的项原创 2020-11-05 18:00:32 · 327 阅读 · 0 评论 -
Thinkphp5中使用PhpSpreadsheet实现excel特定下拉框联动模板的生成
前言:最近有遇到过这样的项目需求,需要导出 excel 模板的时候在模板中内置好需要联动的下拉框选择功能,这样在进行excel填写的时候可以进行选择内置的内容。这里就是进行联动选择的,省、市、区三级进行联动,根据前边选择框中选择的条件联动后续的选择框。功能实现具体的实现功能如下:<?phpnamespace app\design\controller;use PhpOffice\PhpSpreadsheet\Cell\DataValidation;use PhpOffice\PhpS原创 2020-10-16 14:48:51 · 2735 阅读 · 2 评论 -
Thinkphp5中使用PhpSpreadsheet实现excel的导入导出
一、PhpSpreadsheet 介绍1.为什么要使用 PhpSpreadsheet由于 PHPExcel 已经不再维护,所以推荐使用 PhpSpreadsheet 来实现在 Thinkphp5 中实现 excel 的导入或导出功能,PhpSpreadsheet 是一个用 php 编写的库,并引入了命名空间,PSR 规范等。这里简单介绍下 PhpSpreadsheet 在Thinkphp5 框架中的使用方法。2.使用环境PHP5.6 或更高版本,推荐 PHP7支持 php_zip 扩展支持 ph原创 2020-10-16 14:33:21 · 1901 阅读 · 1 评论 -
php中判断文件夹是否存在,不存在则新建
介绍:在项目开发过程中有时候需要进行指定的文件夹内的文件读取或者生成,这时候需要先进行判断文件夹是否存在,如果不存在则新建。方法://判断文件夹是否存在,没有则新建。if (!function_exists('mkdirs')) { function mkdirs($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir, $mode)) { return true; }原创 2020-09-29 10:53:48 · 1752 阅读 · 0 评论 -
php中上传大文件的方法
介绍:在项目开发的过程中有时候会用到上传大文件或者视频的方法,下面介绍两种大文件上传的方法。1.Thinkphp5框架中采用前后端不分离的同源模式,前端使用 webuploader 分片上传的方法,后端使用分片上传。 /** * 大文件上传 * @return \think\response\Json */ public function maxFileUpload() { header("Expires: Mon, 26 Jul 19原创 2020-09-27 15:30:33 · 388 阅读 · 0 评论 -
Thinkphp5中的软删除
前言:在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。1.修改或者添加数据库字段Thinkphp5 中默认的该字段是 delete_time,创建表的时候需要添加字段 delete_time。例如:创建一个 user_list表。 CREATE TABLE `user_list` ( `key` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户表原创 2020-09-22 16:49:52 · 969 阅读 · 0 评论 -
Thinkphp中使用faker创建随机数据
前言:数据填充,我们在创建完数据表格后往往需要做一些假数据,在 Thinkphp 中我们可以通过composer 来安装这个拓展库。安装Faker在项目所在的文件夹中打开命令行输入以下命令:composer require fzaninotto/faker运行以后会在vendor文件夹下生成在项目中的实际使用方法:<?phpnamespace MyFaker;//use会调用类注册, 前提是你得先导入相应的类注册方法 (autoload.php)use Faker\Factory原创 2020-09-17 16:42:47 · 454 阅读 · 0 评论 -
使用think-migration进行数据库迁移
前言:在thinkphp5中提供了数据迁移工具 (think-migration),开发者可以使用版本控制管理他们的数据库迁移。文档:官方文档安装方法:首先通过 composer 安装:composer require topthink/think-migration注意事项,不支持修改文件配置目录。在命令行下运行查看帮助,可以看到新增的命令。php think migrate migrate:breakpoint Manage breakpoints migrate:cre原创 2020-09-17 16:13:20 · 1844 阅读 · 3 评论 -
Thinkphp5中使用redis队列发送消息
文章目录前言一、php中怎么安装redis?二、windows中安装redis三、Thinkphp5中安装think-queue扩展四、在项目中实际使用。总结前言REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。它通常被称为数据结构.原创 2020-09-16 17:41:22 · 841 阅读 · 0 评论 -
php中的异步实现方式
在工作中我们经常遇到一些比较耗时的任务,比如用户注册发送邮件,审核短信通知等功能,同步执行这些功能的话,响应时间就会变长,所以一般我们会用异步执行的方式。原创 2020-09-16 16:07:43 · 652 阅读 · 0 评论 -
composer的安装与使用
composer是什么?Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。只有符合(并不绝对,composer支持自定义加载方式,但强烈建议)psr-0(已废弃)或psr-4的代码编程规范的原创 2020-09-08 14:56:52 · 213 阅读 · 0 评论 -
php中数组转树形结构
前言:树形结构在很多的地方都有用到,商城中商品的分类,组织结构中人员的分类等等,网上有很多的方法,这里做一下总结方便以后的使用。方法一: /** * @param $list 要转换的数据集 * @param int $p_key parent标记字段 * @return array */ function list_to_tree($list, $p_key = 0) { $treeList = [];//定义空数组用来接收原创 2020-09-07 16:38:10 · 1069 阅读 · 0 评论 -
Thinkphp中安装 SQL Server 驱动与扩展
thinkphp中使用 SQL Server 需要下载对应的扩展依赖和安装对应的驱动。(1)需要下载2个php的对应扩展。php_pdo_sqlsrvphp_sqlsrv下载地址:https://docs.microsoft.com/en-us/sql/connect/php/microsoft-php-driver-for-sql-server?view=sql-server-ver15下载完成以后加压放入php中的ext扩展文件夹中(2)在php的环境配置中的php.ini添加2行。ex原创 2020-09-03 17:35:34 · 516 阅读 · 0 评论 -
php中使用视频流的方式播放视频。
1.什么是视频流?视频流是指视频数据的传输,例如,它能够被作为一个稳定的和连续的流通过网络处理。因为流动,客户机浏览器或插件能够在整个文件被传输完成前显示多媒体数据。视频流技术基于 2 密钥技术,视频译码技术和可升级的视频分发技术发展。(摘自百度)2.为什么要用视频流播放视频最近在做项目开发的时候遇到一个问题,进行视频播放的时候后端php通过接口返回视频的地址,前端进行页面播放的时候会出现2-300M大小的视频浏览器可以直接加载,但是超过500M左右的视频就会出现浏览器解析不了变成下载的情况,经过上网原创 2020-09-03 16:43:03 · 5762 阅读 · 1 评论 -
php中的大文件下载的方法,支持2G以上大小并且支持断点续传。
1.HTTP Header里的Range和Content-Range参数Range用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式:Range:(unit=first byte pos)-[last byte pos]Content-Range用于响应头,指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:Content-Range: bytes (unit first byte pos) -原创 2020-09-03 16:13:41 · 766 阅读 · 0 评论