x-zuzhi / juhelib
Self use php class library
2.0.0
2023-11-09 06:29 UTC
Requires
- php: >=7.0.0
- ext-curl: *
- ext-ftp: *
- ext-gd: *
- ext-iconv: *
- ext-json: *
- ext-mbstring: *
- alibabacloud/client: ^1.5
- aliyuncs/oss-sdk-php: ^2.3
- jpush/jpush: ^3.6
- phpmailer/phpmailer: ^6.0
- phpoffice/phpspreadsheet: ^1.23
- qcloud/cos-sdk-v5: ^2.0
- qcloudsms/qcloudsms_php: ^0.1.4
- qiniu/php-sdk: ^7.2
This package is auto-updated.
Last update: 2025-03-09 09:20:21 UTC
README
介绍
Self use php class library
安装教程
composer require x-zuzhi/juhelib
语义化版本
从该版本开始官方将采用语义化版本号策略,也就是版本号格式使用:主版本号.次版本号.修订号。版本号递增规则如下:
- 主版本号:当做了不兼容的 API 修改
- 次版本号:当做了向下兼容的功能性新增
修订号:当做了向下兼容的问题修正
email 类使用方法
use Juhelib\email; ... email::setConfig([ "engine" => "2", // 1、基于socket协议(不支持 ssl) 2、phpmailer(支持 tls / ssl) "nickname" => "xxxx", // 发信昵称 "server" => "xxxx", // smtp 地址 "port" => "587", // smtp 端口,默认 587(可选) "secure" => "tls", // 启用 tls / ssl 加密,默认 tls(可选) "username" => "xxxx", // 账户 "password" => "xxxx", // 密码 "debug" => "false", // 是否开启 debug(可选) ]); // 发送邮件(不使用标签),返回 bool(是否发送成功) var_dump(email::send('xxxx@qq.com','邮件标题','邮件内容')); // 发送邮件(使用标签),返回 bool(是否发送成功) $code = 123456; // 验证码 $code_time = 120; // 验证码有效期(秒) var_dump(email::send( 'xxxx@qq.com', '[:sitename:] - 邮箱验证', '您的验证为:[:code:],有效期为:[:codetime:]分钟,请尽快使用。当前时间:[:date:]', ['sitename' => '我的小站', 'code' => $code, 'codetime' => strval($code_time / 60), 'date' => date("Y-m-d", time())] )); // 以上代码发送的邮件信息如下: // 邮件标题:我的小站 - 邮箱验证 // 邮件内容:您的验证为:123456,有效期为:2分钟,请尽快使用。当前时间:2019-06-22 ...
file 类使用方法
use Juhelib\file; ... // 上传到七牛云 file::setConfig([ 'engine' => 'qiniu', // 引擎 'white_ext' => ['zip', 'doc'], // 增加文件后缀白名单 'image_compress_ratio' => '90', // 图片压缩率,默认90% 'qiniu_url_prefix' => 'http', // 协议 'qiniu_domain' => '七牛云地址', 'qiniu_key_access' => '你的 accessKey', 'qiniu_key_secret' => '你的 secretKey', 'qiniu_bucket_name' => '空间名称' ]); // 上传到阿里云 OSS file::setConfig([ 'engine' => 'alioss', // 引擎 'white_ext' => ['zip', 'doc'], // 增加文件后缀白名单 'image_compress_ratio' => '90', // 图片压缩率,默认90% 'alioss_key_access' => '你的 accessKey', 'alioss_key_secret' => '你的 secretKey', 'alioss_endpoint' => '数据节点', // 我这里用的是杭州节点,http://oss-cn-hangzhou.aliyuncs.com 'alioss_bucket_name' => '空间名称' ]); // 上传到腾讯 COS file::setConfig([ 'engine' => 'qcloud', // 引擎 'white_ext' => ['zip', 'doc'], // 增加文件后缀白名单 'image_compress_ratio' => '90', // 图片压缩率,默认90% 'qcloud_url_prefix' => 'http', // 协议 'qcloud_region' => '存储桶地域,例如:ap-chengdu', 'qcloud_secret_id' => '你的 secretId', 'qcloud_secret_key' => '你的 secretKey', 'qcloud_bucket' => '格式:BucketName-APPID' ]); // 上传到 FTP file::setConfig([ 'engine' => 'ftp', // 引擎 'white_ext' => ['zip', 'doc'], // 增加文件后缀白名单 'image_compress_ratio' => '90', // 图片压缩率,默认90% 'ftp_host' => 'FTP 地址', 'ftp_port' => 'FTP 端口', 'ftp_username' => 'FTP 账号', 'ftp_password' => 'FTP 密码', 'ftp_url' => '外部资源地址', // 只要外部能直接访问该资源即可 // 示例一:'ftp_url' => 'http://1.cn:8080' // 示例二:'ftp_url' => 'https://1.cn:8443' // 示例三:'ftp_url' => 'ftp://1.cn:8021' ]); // 上传到 FTP (SSL) file::setConfig([ 'engine' => 'ftp-ssl', // 引擎 'white_ext' => ['zip', 'doc'], // 增加文件后缀白名单 'image_compress_ratio' => '90', // 图片压缩率,默认90% 'ftp_host' => 'FTP 地址', 'ftp_port' => 'FTP 端口', 'ftp_username' => 'FTP 账号', 'ftp_password' => 'FTP 密码', 'ftp_url' => '外部资源地址', // 只要外部能直接访问该资源即可 // 示例一:'ftp_url' => 'http://1.cn:8080' // 示例二:'ftp_url' => 'https://1.cn:8443' // 示例三:'ftp_url' => 'ftp://1.cn:8021' ]); // 上传到 SFTP(PHP 需安装 SSH2 扩展) file::setConfig([ 'engine' => 'sftp', // 引擎 'white_ext' => ['zip', 'doc'], // 增加文件后缀白名单 'image_compress_ratio' => '90', // 图片压缩率,默认90% 'sftp_host' => 'SFTP 地址', 'sftp_port' => 'SFTP 端口', 'sftp_username' => 'SFTP 账号', 'sftp_password' => 'SFTP 密码', 'sftp_path' => '上传路径', 'sftp_url' => '外部资源地址', // 只要外部能直接访问该资源即可 // 示例一:'sftp_url' => 'http://1.cn:8080' // 示例二:'sftp_url' => 'https://1.cn:8443' // 示例三:'sftp_url' => 'ftp://1.cn:8021' ]); // 上传到本地 file::setConfig([ 'engine' => 'local', // 引擎 'white_ext' => ['zip', 'doc'], // 增加文件后缀白名单 'image_compress_ratio' => '90', // 图片压缩率,默认90% ]); // 开始文件上传,返回上传成功后的(数组)图片地址 var_dump(file::upload([ 'upload_folder' => 'upload', // 这里填写本地存放目录 'file_size' => '4096' // 这里可以限制文件大小,默认设置 4M 文件限制,默认单位为KB ])); // 开始 Base64 图片上传,返回上传成功后的(数组)图片地址 var_dump(file::upload_base64([ 'upload_folder' => 'upload', // 这里填写本地存放目录 'file_size' => '4096' // 这里可以限制文件大小,默认设置 4M 文件限制,默认单位为KB ])); ...
sms 类使用方法,发送短信验证码
use Juhelib\sms; ... // 腾讯云短信 sms::setConfig([ 'engine' => 'qcloud', // 短信引擎 'qcloud_appid' => '你的 appid', 'qcloud_appkey' => '你的 appkey', 'qcloud_template_id' => '短信模板 ID', 'qcloud_sign' => '短信签名', ]); // 发送短信,返回 bool(是否发送成功) var_dump(sms::sendSms('手机号', ['验证码'] // 短信参数 )); // 阿里短信 sms::setConfig([ 'engine' => 'alisms', // 短信引擎 'alisms_keyid' => '你的 keyid', 'alisms_secret' => '你的 secret', 'alisms_template_code' => '短信模板 code', 'alisms_sign' => '短信签名', ]); // 发送短信,返回 bool(是否发送成功) var_dump(sms::sendSms('手机号', ['code' => '验证码'] // 短信参数 )); ...
image 类使用方法
use Juhelib\image; ... // 压缩图片 image::compressedPictures('图片路径', '压缩后保存路径', '是否内部调用(true/false)', '图片压缩比(默认90)'); // 判断是否 gif 动画 image::check_gifcartoon('图片路径'); ...
ip 类使用方法
use Juhelib\ip; ... // 获取 IP 地址 ip::getIP(); // 获取 IP 数据,返回 [Array] 数据 ip::getData('qqwry'); // 可选参数: taobao/ip138/qqwry ...
hook 类使用方法
use Juhelib\hook; ... // 注册钩子 hook::add('name', function() { echo 'hello world'; }); // 执行钩子 hook::run('name'); ...
excel 类使用方法
use Juhelib\excel; ... // 读取 excel 文件,返回 [Array] 数据 excel::getExcel('文件路径', '从第n行开始读取'); // 导出 excel 文件 (方法一) $array = [ ['Apple IPhone 11 X', '¥8999', '实体'], ['小米 10', '¥3999', '实体'] ]; foreach ($array as $key => $value) { $data[$key] = [ '商品名称' => $value[0], '商品价格' => $value[1], '商品类型' => $value[2], ]; } // 也可使用 excel::exportPdf 函数进行 PDF 文件导出 excel::exportExcel([ [ 'name' => '商品数据', 'data' => $data ], [ 'name' => '财务数据', 'data' => [ [ '日进账' => '八万', '月进账' => '二十四万', '年进账' => '两千九百二十千万' ] ] ] ], ['file_name' => 'Demo']); // 导出 excel 文件 (方法二) // 也可使用 excel::exportPdf 函数进行 PDF 文件导出 excel::exportExcel([ [ 'name' => '商品数据', 'title' => ['商品名称', '商品价格', '商品类型'], 'data' => [ ['Apple IPhone 11 X', '¥8999', '实体'], ['小米 10', '¥3999', '实体'] ] ], [ 'name' => '财务数据', 'title' => ['日进账', '月进账', '年进账'], 'data' => [ ['八万', '二十四万', '两千九百二十千万'] ] ] ], ['file_name' => 'Demo']); // 根据模板 导出 excel 文件 // 也可使用 excel::exportPdf 函数进行 PDF 文件导出 excel::exportExcel([ [ // 中间件(可选) 'middleware' => function ($spreadsheet) { // 此处可用于处理模板内容,比如修改标题、时间等 $spreadsheet->setCellValue('A1', '年月(2021-06)'); return $spreadsheet; }, 'data' => [ ['Apple IPhone 11 X', '¥8999', '实体'], ['小米 10', '¥3999', '实体'] ] ], [ 'data' => [ ['八万', '二十四万', '两千九百二十千万'] ] ] ], ['file_name' => 'Demo', 'template_path' => 'demo.xlsx']); ...
safe 类使用方法
use Juhelib\safe; ... // 字符串加密模块 safe::str_encrypt('源字符串', '密钥'); // 字符串解密模块 safe::str_decrypt('加密过的字符串', '密钥'); // 文件加密模块 safe::file_encrypt('源地址', '加密后的文件地址', '密钥'); // 文件解密模块 safe::file_decrypt('加密过的文件地址', '解密后的文件地址', '密钥'); ...
system 类使用方法
use Juhelib\system; ... // 获取物理 Mac 地址 system::get_mac_addr(); // 生成机器码 system::machine_code('混淆码'); ...
check 类使用方法
use Juhelib\check; ... // 验证银行卡号是否有效(前提为16位或19位数字组合) check::isBankCard('银行卡号'); // 验证身份证号是否正确 check::isIdentityCard('身份证号'); // 验证url地址 check::isUrl('Url', '协议,默认 Http'); // 验证电话号码 check::isPhone('电话号码'); // 验证邮箱 check::isEmail('邮箱'); // 验证邮编 check::isZip('邮编'); // 是否是数字 check::isNumeric('传递值'); // 是否超过最大长度 check::isMaxLength('传递值', '最大长度'); // 超过最大数 check::isMaxValue('传递值', '最大值'); // 验证用户名(只允许下划线+汉字+英文+数字(不支持其它特殊字符)) check::isUsername('传递值', '最小长度', '最大长度'); // 是否为空值 check::isEmpty('传递值'); // 数字验证 check::isNum('传递值'); // 是否是数字或英文组合 check::isNumLetter('传递值'); // 是否同时包含数字和英文,必须同时包含数字和英文 check::isNumAndLetter('传递值'); // 微信号验证 check::isWebchat('微信号'); ...
push 类使用方法
use Juhelib\push; ... // 个推推送 push::setConfig([ 'engine' => 'getui', // 推送渠道 'app_id' => '你的 appid', 'app_key' => '你的 appkey', 'master_secret' => '你的 master_secret', ]); // 向单个用户推送消息 $clickType = 'url'; // intent:打开应用内特定页面 // url:打开网页地址 // payload:自定义消息内容启动应用 // payload_custom:自定义消息内容不启动应用 // startapp:打开应用首页 // none:纯通知,无后续动作 $behavior = 'http://www.baidu.com'; push::message('cid', '标题', '内容', ['click_type' => $clickType, 'behavior' => $behavior]); // 极光推送 push::setConfig([ 'engine' => 'jiguang', // 推送渠道 'app_key' => '你的 appkey', 'master_secret' => '你的 master_secret', ]); push::message('registration_id', '标题', '内容'); ...
后续
setConfig 方法可以一次性赋值,拿 sms 类为例
use Juhelib\sms; ... sms::setConfig([ 'engine' => 'qcloud', // 短信引擎 'qcloud_appid' => '你的 appid', 'qcloud_appkey' => '你的 appkey', 'qcloud_template_id' => '短信模板 ID', 'qcloud_sign' => '短信签名', 'alisms_keyid' => '你的 keyid', 'alisms_secret' => '你的 secret', 'alisms_template_code' => '短信模板 code', 'alisms_sign' => '短信签名', ]); ...