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: 2024-04-09 07:33:46 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', '纯真IP库文件地址');
ip::getData('ip138');
ip::getData('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' => '短信签名',
]);
...