![](https://img-blog.csdnimg.cn/direct/d50d175e7e4545dc838d5c3fddb2dcf2.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PHP
PHP相关经验汇总
陀螺蚁
只要热爱,就继续坚持!加油!
展开
-
PHP自定义函数之根据指定key进行数组下标重组
/** * 索引下标重新排列(根据指定key进行数组下标重组) * * @param array $data 传入需要处理的数组(最大支持二位数组),一维数组 * @param string $suffix 下标字段 * * @return array */function array_key_change( array $data = [],$suffix=''){ $_data = []; if( !is_string($suffix) )return $da原创 2021-06-25 09:19:05 · 419 阅读 · 0 评论 -
PHP自定义函数之浮点小数位保留(字符串切割) - 舍去不进位
代码:/** * 浮点小数位保留(字符串切割) - 舍去 * * @param string $number 数值 * @param int $digit [可选]保留位数,默认:3 * * @return int|float */function floatDecimalExcision(string $number,$digit=3){ $number = explode('.',$number); $digit = $digit - 1;原创 2021-01-29 22:25:59 · 318 阅读 · 0 评论 -
PHP自定义函数之无级分类(递归)
代码:class TreeUnit{ /** * 生成树状结构 * * @param array $list 一维数组 * @param string $pk 主键字段名称 * @param string $pid 上级字段名称 * @param string $child 子级字段名称 * @param int $root 起始位 * * @return array */原创 2021-03-10 16:13:16 · 102 阅读 · 0 评论 -
PHP小知识之final关键词
PHP5及以上版本支持Final 关键字> 特性:如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。> 示例1:类方法带有final关键词class FinalDemoClass{ // 建立一个带有final关键词的类方法TestFun() final public function TestFun() { echo "FinalDemoClass::TestFun() 被调用\n"; .原创 2020-06-13 15:20:22 · 151 阅读 · 0 评论 -
PHP RSA2 签名算法
PHP-RSA2签名验证RSA2 是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法。该算法比SHA1WithRSA有更强的安全能力。<?php/** * RSA2 加密 */class Rsa2{ private static $PRIVATE_KEY = <<<EOD-----BEGIN RSA PRIVATE KEY-----////////-----END RSA PRIVATE KEY-----转载 2020-07-22 14:53:22 · 254 阅读 · 0 评论 -
【composer】如何在本地开发、调试Composer包
本地开发和调试composer包原创 2023-05-27 00:51:57 · 1560 阅读 · 0 评论 -
【PhpSpreadsheet】实现excel冻结列和行(即左右滚动时指定列和行固定不动)
composer require phpoffice/phpspreadsheet版本:^1.18在做表格数据导出时,如何冻结列和行(即左右滚动时冻结的列和行固定不动)代码$spreadsheet = new Spreadsheet();// 获取激活工作表$sheet = $spreadsheet->getActiveSheet();// 设定B3行、列冻结窗格$sheet->freezePane("B3",true);效果扩展【源】phpspreadshee.原创 2021-11-11 10:52:35 · 1160 阅读 · 0 评论 -
PHP框架开发之可扩展的Db数据库
常见项目开发框架都是支持多种不同数据库类型的切换,例如:PDO、MySqli、SQLite等等这里也做个简单的笔记,基于简单工厂模式编写一个可扩展的Db数据库支持;第一步:约定数据库必须需要实现的处理方法/** * 数据库类型扩展接口 */interface DbInterface{ /** * 数据库连接 * * @param string $host // 连接地址 * @param string $user // 用户 * @.原创 2020-06-12 05:22:44 · 199 阅读 · 0 评论 -
PHP开发设计模式之单例模式
一、简介Singleton(单例模式),是最常见的开发模式之一作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。定义简单而言,就是一个独立的存在,在全局范围没有第二个了;优点对唯一实例的受控访问缩小命名空间 单例模式是对全局变量的一种改进。它避免了那些存储唯一实例的全局变量污染命名空间比类操作更灵活应用场景Db数据库的应用操作,在项目中常会需要大量的DB操作,使用单原创 2020-06-13 16:18:54 · 197 阅读 · 0 评论 -
PHP自定义函数之计算别名序列数组的差集
示例$a = [];$b = [];$c = aliasArrayDiff($a, $b);var_dump($c);代码/** * 计算别名序列数组的差集 * * @param array $newData 待比对数组1 * @param array $oldData 待比对数组2 * @param string $asName [可选]默认goods_id,对比数组中同时持有的依据key名称 * @param array $attach [可选]公共附带数据 * * @原创 2021-11-10 15:30:13 · 244 阅读 · 0 评论 -
PHP框架开发之Route路由简单实现
参数Laravel路由的使用方式,来效仿一个简单的路由实现方式class Route{ /** * @var $_instance // 实例 */ private static $_instance = null; /** * @var $_currentPath // 当前URL中的地址 */ private $_currentPath = ''; /** * @var $_prefix // URL地址中前缀原创 2020-06-11 18:02:31 · 2100 阅读 · 0 评论 -
PHP功能实现之微信提现(企业付款)
<?phpnamespace App\Helpers\Unit\Behaviour;use App\Helpers\Traits\Logs;use App\Models\PayTakeoutLogModels AS mPayTakeoutLog;/** * 组件 - 微信提现 * * @version 1.0.0 * @author Yunuo <ciwdream@gmail.com> * @link https://pay.weixin.qq.com/wiki/原创 2020-08-25 17:11:10 · 729 阅读 · 0 评论 -
PHP技巧之链式调用
接触过ThinkPHP、Laravel、Yii等开发框架的朋友们应该经常遇到这样的调用方式:// Laravel链式调用示例DB::table('users')->where('name', 'John')->first();我们对比下传统早期的调用方式$_db = new DB();$_db->table('users');$_db->where('name','John');$_db->first();两者相比是不是,链式更方便、简洁;那如何实现类.原创 2020-06-12 16:31:42 · 428 阅读 · 0 评论 -
【资源库】CRM - Composer源管理工具
由于composer在国内下载速度非常慢,大家都习惯使用中国镜像,如果正在使用的镜像没有更新或者出现故障你可以使用Composer Registry Manager帮助你轻松地切换到另外一个镜像。默认带了一些镜像,当然你也可以添加新的镜像。安装使用composer安装,执行下面命令$ composer global require slince/composer-registry-manager基本用法列出所有可使用的镜像$ composer repo:ls --- -----------转载 2023-08-07 18:34:04 · 114 阅读 · 0 评论 -
PHP自定义函数之日期段列表生成
代码<?php/** * 指定日期访问内的日期列表 * @link https://segmentfault.com/q/1010000002458720 * * @param string $start 开始日期,例如:2020-07-23 * @param string $end 结束日期,例如:2020-07-23 * @param string $format 日期格式,默认:Y-m-d * @param integer $len 步长(天),默认:1 * @r原创 2020-12-21 13:43:29 · 174 阅读 · 0 评论 -
PHP自定义函数之格式化字段Value数据类型
代码/** * 格式化字段Value数据类型 * * @param array|object $data 待格式化数据,一维数组 * @param array $fieldList 需格式化字段名称,一维数组 * @param string $dataTypeFun 格式化函数名称 * * @return array */function formatFieldDataType(&$data,array $fieldList=[],$d原创 2020-12-17 11:21:00 · 160 阅读 · 0 评论 -
PHP如何调用Python脚本执行 之 ppython
环境Python 3.*及以上PHP PPython类<?phpnamespace PPython;class PPython { private static $_CONFIG = []; private static $_ISINIT = false; public static function init(array $config = []) { self::$_CONFIG['LAJP_IP'] =原创 2020-06-14 15:10:46 · 1341 阅读 · 2 评论 -
Laravel/Lumen打印SQL语句的两种方式
方式一:// 开启执行日志DB::enableQueryLog();$_execute = DB::table('table_name')->where('id',1)->get();$_rsSql = DB::getQueryLog();dd($_execute,$_rsSql);// $_rsSql返回: array:1 [▼ 0 => array:3 [▼ "query" => "select * from `table_name` where `原创 2021-08-19 10:39:31 · 1043 阅读 · 0 评论 -
laravel-admin自定义页面自定义js需要刷新一次的解决
最近接到个任务需求,需要对原有Laravel-admin的列表页面进行一个小特效的加入(仅一个菜单栏目);完成JS插件封装后,在正常资源加载完整时,JS插件可以进行正常的使用;但也发现个问题,当非目标页面并没有载入指定JS插件资源文件时,再切入到目标页面,资源并没有被(以下代码)引入,这时候刷新一下当前页面,该JS资源文件才被载入到页面上;// 参考开发文档(扩展列功能):https://laravel-admin.org/docs/zh/model-grid-columnAdmin::js("/v原创 2020-08-07 14:17:46 · 1499 阅读 · 0 评论 -
Laravel/Lumen 扩展DB Query方法以提供完整SQL执行语句
开发调试时,可能需要调试某个节点SQL完整的执行语句而Laravel/Lumen默认提供的在查看上不够直观,例如:select * from TableName where id = ?参数值以?作为占位,显得不够直观基于上述情况,我们可以扩展DB的Query方法来实现需求;在App\Providers\AppServiceProvider的register方法内namespace App\Providers;use Illuminate\Support\ServiceProvider;/.原创 2021-08-19 10:38:26 · 931 阅读 · 0 评论 -
Lumen 报错 : Class ‘League\Flysystem\Adapter\Local‘ not found
在使用Lumen框架的时候,需要文件存储支持时,提示报错: Class ‘League\Flysystem\Adapter\Local’ not found主要是缺乏扩展库,不过记得引入依赖时,带上版本号新版League\Flysystem目录结构有变化,导致Lumen8.0下无法查找到对应类;composer require league/flysystem:"^1.0...原创 2021-07-22 14:31:35 · 2494 阅读 · 0 评论 -
Laravel Illuminate Request 方法扩展
【代码】Laravel Illuminate Request 方法扩展。原创 2023-08-08 09:12:20 · 145 阅读 · 0 评论 -
Laravel资源路由
路由文件仅需简单的设置,即可快速定义上表的7个路由设置:Route::resource('article', 'ArticleController');附:<?phpnamespace App\Helpers\Contracts;use Illuminate\Http\Request;interface RESTfuApi{ // GET 索引/列表 public function index(Request $request); // GET /crea.原创 2020-11-26 15:15:33 · 432 阅读 · 0 评论 -
Laravel/Lumen 实时监听打印SQL
1.创建监听器# 仅适用于Laravelphp artisan make:listener SqlQueryListener --event=Illuminate\\Database\\Events\\QueryExecuted2.增加监听事件打开 app/Providers/EventServiceProvider.php ,在$listen中添加/** *The event listener mappings for the application. * * @var array *原创 2021-07-29 11:55:13 · 435 阅读 · 0 评论 -
Laravel 表单验证之场景验证
文章内容主体内容借鉴来源:《Laravel 开发 API 心得》表单验证手册:《Laravel 8 中文文档 - 表单验证》一、创建表单验证自定义类1) FormRequest「表单验证基类」Create File: app/Http/Requests/FormRequest.php# [可选] artisan 方式创建php artisan make:request FormRequest<?phpnamespace App\Http\Requests;use App\.原创 2022-03-12 12:06:22 · 1962 阅读 · 0 评论 -
Laravel/Lumen 多库多事务异常回滚失败解决
默认手动事务操作过程:# 开启事务DB::beginTransaction();// 模型业务$_mA = new TestAModel();try { $_mA->insertGetId([...]); // ...为实际需要插入的数据}catch (\Exception $e){ // 失败/异常,回滚 DB::rollBack();}// 提交数据操作DB::commit();实际开发中,我们可能用到多库直接数据的操作,这时安装默认的方式会造成部分数据已经操作原创 2021-01-16 11:10:49 · 653 阅读 · 0 评论 -
Lumen 默认时区修改(留个笔记)
Lumen 默认时区修改与Laravel不同除默认app.php配置中修改'timezone' => 'UTC',改为:'timezone' => 'Asia/Shanghai',还需要修改.env文件内的时区配置:APP_TIMEZONE=UTC改为:APP_TIMEZONE=Asia/Shanghai否则会出现,部分时间正常部分时间时区不对的清空...原创 2021-02-01 19:59:22 · 198 阅读 · 0 评论 -
Laravel/Lumen DB扩展方法之获取表字段
AppServiceProvider内提前注册DB Query扩展自定义方法的方式;namespace App\Providers;use Illuminate\Support\ServiceProvider;use Illuminate\Database\Query\Builder AS queryBuilder;use Illuminate\Database\Eloquent\Builder AS eloquentBuilder;use Illuminate\Support\Facades\S原创 2022-05-05 12:47:46 · 1027 阅读 · 1 评论 -
Laravel/Lumen DB扩展方法之保留排除字段以外的字段查询
思路来源于:《Laravel 查询如何排除某些字段?如只排除 content 文本,其它字段都需要。》基于上述文章评论的原有代码,这次改用AppServiceProvider内提前注册DB Query扩展自定义方法的方式;namespace App\Providers;use Illuminate\Support\Facades\Redis;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends Serv.原创 2021-08-19 11:34:17 · 1147 阅读 · 0 评论 -
Laravel/Lumen 解决groupBy报错
报错内容:SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘user.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with s.原创 2021-07-29 15:11:04 · 436 阅读 · 0 评论 -
lumen 队列之任务链
Lumen任务基础配置,可参考以下资料:[lumen 队列处理]这里主要介绍Lumen中的任务链使用;在Laravel中队列任务链,可借助withChain方法实现:ProcessPodcast::withChain([ new OptimizePodcast, new ReleasePodcast])->dispatch();在Lumen队列使用中,任务链使用有些许变化具体的语法如下:// 创建两个任务类:testA、testB// 构建任务链执行$_jobTes原创 2021-01-21 11:46:35 · 372 阅读 · 0 评论 -
laravel-admin模型表格之表格数据源(union联表数据)
laravel-admin 是一个可以快速帮你构建后台管理的工具,它提供的页面组件和表单元素等功能,能帮助你使用很少的代码就实现功能完善的后台管理功能。官方开发文档:Laravel admin | 表格数据源最近遇到一个项目需求,需要将union的数据进行列表化展示在后台;后台基于Laravel-Admin扩展来实现的,由于model-grid的数据是依赖Eloquent model来查询获取;也就是说Encore\Admin\Grid被new的时候传入的参数1必须是个Eloquent mode.原创 2020-08-28 11:18:22 · 960 阅读 · 0 评论