x-zuzhi/juhelib

Self use php class library

2.0.0 2023-11-09 06:29 UTC

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' => '短信签名',
    ]);
...