zxf / tools
第三方登录、条形码Barcode、二维码QrCode、生成菜单、发送短信、图片处理、随机数、字符压缩、文字转图片、生成数据字典、远程截图、Redis、laravel多模块应用和一些常用方法集合等
v1.4.5
2025-05-09 07:46 UTC
Requires
- php: >=8.0
- ext-curl: *
- ext-dom: *
- ext-gd: *
- ext-pdo: *
- dev-master
- v1.4.5
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.9
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.9
- 1.0.8
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
This package is auto-updated.
Last update: 2025-06-10 06:00:11 UTC
README
基于 php 的项目模块开发 调用命名空间 使用 use zxf\…… 例如 use zxf\Http\Curl; use zxf\Tools\Collection;
在线文档: http://weisifang.com/docs/2
安装&引用
composer require zxf/tools
涵盖模块
模块 | 需要包含的文件夹/说明 |
---|---|
zxf\Tools\Collection | [Collection] 数据集合操作 |
Qqlogin | QQ登录 |
微信 | |
Office | 读写Word、读写Excel(支持自动提取金山WPS和微软Office 表格中的图片) |
截图 | ScreenShot |
微博登录 | sina |
zxf\Min\JS | js 压缩工具(推荐) |
zxf\Min\CSS | css 压缩工具(推荐) |
QrCode | 生成二维码 |
BarCode | 生成条形码 |
Compressor | 图片压缩类 |
Cache | 文件缓存 |
TextToImg | 文字转图片 |
PHPMailer | 发送邮件 |
Curl | http 网络请求 |
Sms | 发送短信: ali(阿里云)[默认] 或者 tencent(腾讯云) |
Database | 数据库Orm模型 |
Menu | 生成目录菜单(adminlte、layuiadmin、nazox、inspinia) |
Random | 生成随机数 |
ImgToIco | 图片转ico 格式 |
Modules | laravel 多模块应用 |
Command | 命令行解析工具 |
Tree | 树形结构化 |
Dom | 简单快速的 HTML 解析器,此模块来源:https://github.com/Imangazaliev/DiDOM |
Encryption | AES、RSA加密解密 |
TnCode | 改良版滑动验证码 |
其他 | Command、Cookie管理、站点文件生成、时区转换文件操作等工具类 |
示例
Curl 网络请求
强大且简便的的Http 请求管理 「Http请求文档」
\zxf\Http\Curl::instance()->setParams(['path'=>'pages/index/index'])->post($url,'json');
Cache 文件缓存
实例化
use zxf\Tools\Cache; $cache = Cache::instance([ 'cache_dir' => "./cache", // 缓存地址 'type' => 'random', // 缓存方式 key: 直接使用key存储,random:对key加密存储 'mode' => '1', //缓存模式 1:serialize ;2:保存为可执行php文件 ]);
缓存 api
//设置存放缓存文件夹路径 $cache->setCacheDir('./cache'); //设置缓存模式 $cache->setMode(1); //模式1 缓存存储方式 //a:2:{s:11:"expiry_time";i:6475431070;s:4:"data";a:1:{s:3:"key";s:5:"value";}} //模式2 缓存存储方式 // <?php // return array( // 'data'=>'xxx' //); // 获取缓存 $cache->get('name'); // 设置缓存 $cache->set('name', '张三'); // 设置缓存有效期,第三个参数为int 类型表示缓存多少秒,为string 类型时候的缓存时间为 strtotime 函数支持的字符串,例如:"+1 day" $cache->set('status', '1',55); // 缓存55秒 $cache->set('status', '1','+5 hours'); // 缓存5小时 // 清空所有缓存 $cache->flush(); // 删除一条缓存 $cache->delete('name'); // 判断某条缓存是否存在 $cache->has('name');
js压缩
$minifier = new \zxf\Min\JS('var a = "hello";',$jsFilePath,...); // 实例化 并混合自动引入 任意个 需要压缩的 js 文件路径 和 代码段
$res = $minifier->minify();
css压缩
$minifier = new \zxf\Min\CSS('body { color: #000000; }',$cssFilePath,...); // 实例化 并混合自动引入 任意个 需要压缩的 css 文件路径 和 代码段
$res = $minifier->minify();
QrCode 创建二维码
use zxf\QrCode\QRCodeGenerate; $levelMap = [ 'high' => EccLevel::H, 'quartile' => EccLevel::Q, 'medium' => EccLevel::M, 'low' => EccLevel::L, ]; $qrcode = new QRCodeGenerate([ // 'version' => $level == 'high' ? min(max(strlen($text) / 10, 10), 35) : 2, // 'version' => \zxf\QrCode\Common\Version::AUTO, 'eccLevel' => !empty($logoPath) ? EccLevel::H : $levelMap[$level], 'scale' => (int)($input['scale'] ?: 2), // 每个模块的像素大小 ]); $handle = $qrcode ->content($text) ->withText($label ?? '', $fontPath??'', $fontSize??10) // 可选 ->withLogo($logoPath) // 可选 ; // 把图片直接输出到浏览器上 $handle->toBrowser(); // 生成图片保存到文件 $handle->toFile('/your/path/to/qrcode.png'); // 生成base64图片字符串 $base64 = $handle->toBase64(); echo '<img src="' . $base64 . '">';
BarCode 创建条形码
use zxf\BarCode\BarCodeGenerate; $barcode = new BarCodeGenerate(); $image = $barcode ->width((int)$bar_width) // 条码宽度,单位为像素 ->height((int)$thickness) // 条码高度,单位为像素 ->padding(8) // 条码安全区,单位为像素 ->text($label, (int)$fontSize) // 设置底部文本 ->content($text,$textSize??10,$fontPath??'') // 设置条码内容 ->format($codeType) // 设置条码格式 ; // 直接输出到浏览器 $barcode->toBrowser(); // 保存到文件 $filePath = $barcode->toFile('/your/path/barcode.png'); // 返回图片资源 $barcode->toImg(); // 返回base64图片资源 $barcode->toBase64();
Compressor 图片压缩类
/** * 功能:图片压缩类(可改变图片大小和压缩质量以及保留宽高压缩) * * @DateTime 2019-03-08 * * 调用示例: * # 实例化对象 * $Compressor = new \zxf\tools\Compressor(); * OR * $Compressor = \zxf\tools\Compressor::instance(); * * # 使用原始尺寸 压缩图片大小并输出到浏览器 * $result = $Compressor->set('001.jpg')->proportion(1)->get(); * # 仅压缩 * $result = $Compressor->set('001.jpg')->compress(5)->get(); * # 仅改变尺寸并保存到指定位置 * $result = $Compressor->set('001.jpg', './resizeOnly.jpg')->resize(500, 500)->get(); * # 压缩且改变尺寸并保存到指定位置 * $result = $Compressor->set('001.jpg', './resizeAndCompress.png')->resize(0, 500)->compress(5)->get(); * # 压缩且按照比例压缩 * $result = $Compressor->set('001.jpg', './resizeAndCompress.png')->proportion(0.5)->compress(5)->get(); * return $result; * 参数说明: * set(原图路径,保存后的路径); // 如果要直接输出到浏览器则只传第一个参数即可 * resize(设置宽度,设置高度);//如果有一个参数为0,则保持宽高比例 * proportion(压缩比例);//0.1~1 根据比例压缩 * compress(压缩级别);//0~9,压缩级别,级别越高就图片越小也就越模糊 * get();//获取生成后的结果 * 提示: * proportion 方法 回去调用 resize 方法,因此他们两个方法只需要选择调用一个即可 */
TextToImg 文字转图片
use zxf\tools\TextToImg; /** * 文字生成图片 * * // 创建一个实例 * $TextToImg = new TextToImg(1200, 800); * * $TextToImg->setFontFile('./arial.ttf'); // 设置自定义字体路径 * $TextToImg->setFontStyle('foxi'); // 选择本库中支持的一种字体 * $TextToImg->setText('这是<br>一段<br>测试文字'); // 设置文字内容,支持使用 <br> 换行 * $TextToImg->setColor('FF00FF'); // 设置文字颜色 * $TextToImg->setBgColor('00FF00'); // 设置图片背景色 * $TextToImg->setAngle(90);// 设置文字旋转 * $TextToImg->setSize(20);// 设置文字固定字号为20【提示:本库默认会自动计算字体大小,如果设置该属性就使用传入的固定值】 * $TextToImg->render();// 显示图片到浏览器 * $TextToImg->render('test.png');// 将图片保存至本地 */
附 包中可使用的字体参照
pmzdxx 庞门正道细线体
pmzdbt 庞门正道标题体
lishu 隶书
yishanbei 峄山碑篆体
图片转ICO格式
$imgurl = "./test.jpeg";
// 下载到浏览器
zxf\tools\ImgToIco::instance()->set($imgurl, 32)->generate();
// 保存到指定文件夹
zxf\tools\ImgToIco::instance()->set($imgurl, 32)->generate('your/path/test.ico');
Tree 树形结构化,
// 结构:
$arr = array(
array('id'=>'1','pid'=>0,'name'=>'一级栏目一'),
array('id'=>'2','pid'=>0,'name'=>'一级栏目二', 'weight' => 101),
array('id'=>'3','pid'=>1,'name'=>'二级栏目一', 'weight' => 1),
array('id'=>'4','pid'=>1,'name'=>'二级栏目二', 'weight' => 2),
array('id'=>'5','pid'=>2,'name'=>'二级栏目三'),
array('id'=>'6','pid'=>3,'name'=>'三级栏目一'),
array('id'=>'7','pid'=>3,'name'=>'三级栏目二')
)
// 用法:
// 使用默认配置 初始化数据
$tree = zxf\tools\Tree::instance($data);
// OR
$tree = zxf\tools\Tree::instance()->setData($data);
// 自定义id、pid、children配置
zxf\tools\Tree::instance($data)->setId('id')->setPid('pid')->setChildlist('children')->getTree();
// 自定义权重字段和排序方式
zxf\tools\Tree::instance($data)->setWeight('weight')->setSortType('desc')->getTree();
// 自定义根节点id,默认为0
zxf\tools\Tree::instance($data)->setRootId(1)->getTree();
// 接口:
// 获取结构树
$nodes = $tree->getTree();
// 获取所有子节点的主键(包含自己)
$nodes = $tree->getChildrenAndMeIds(1);
// 获取所有子节点列表(包含自己)
$nodes = $tree->getChildrenAndMeNodes(1);
// 获取所有子节点的主键(不包含自己)
$nodes = $tree->getChildrenIds(1);
// 获取所有子节点列表(不包含自己)
$nodes = $tree->getChildrenNodes(1);
// 获取所有父节点主键(包含自己)
$nodes = $tree->getParentAndMeIds(5);
// 获取所有父节点列表(包含自己)
$nodes = $tree->getParentAndMeNodes(5);
// 获取所有父节点主键(不包含自己)
$nodes = $tree->getParentIds(5);
// 获取所有父节点列表(不包含自己)
$nodes = $tree->getParentNodes(5);
// 获取所有根节点主键
$roots = $tree->getRootsIds();
// 重新初始化数据
$tree->reset();
// 添加新节点
$tree->addNode(['id' => 7, 'pid' => 0, 'name' => 'New Node']);
// 删除节点
$tree->removeNode(7);
// 更新节点
$tree->updateNode(2, ['name' => 'Updated Node']);
网页截图
使用前需要提前到phantomjs 下载相应的可执行应用程序
use zxf\ScreenShot\ScreenShot;
// $softPath: 可执行文件phantomjs或者phantomjs.exe 所在目录; ScreenShot 会自动识别系统 $softPath 该使用 phantomjs 还是 phantomjs.exe
// $url: 被截图网页 url
// $savePath: 截图成功后的保存文件完整地址
$res = ScreenShot::init($softPath='/Users/linian/extend')->setUrl($url = 'http://weisifang.com')->run($savePath = __DIR__.'/img/'.time().'.png');
$res 返回 true|fales 表示是否截图成功
laravel 多模块应用
使用
trace
助手函数进行代码调试