torugo / util
包含有用类和方法的库
Requires
- php: ^8.2
- ext-mbstring: *
- ext-openssl: *
Requires (Dev)
- phpunit/php-code-coverage: ^11.0
- phpunit/phpunit: ^11.2
README
包含有用类和方法的库。
目录
需求
- PHP 8+
- PHP mbstring 扩展已安装并加载。
- PHP openssl 扩展已安装并加载。
- Composer 2+
安装
在终端中输入
composer require torugo/util
或将它添加到 composer.json 文件的 require 列表中
{ "require": { "torugo/util": "^0.1.0" } }
工具
CDT(压缩日期和时间)
CDT 是一种包括毫秒的日期和时间存储方式。
use Torugo\Util\CDT\CDT;
获取
返回当前日期/时间的 CDT。
$cdt = CDT::get(); // returns something like "SGVU9Z2WV"
fromTimestamp
从时间戳或 microtime 生成 CDT。
$cdt = CDT::fromTimestamp(416410245.1234); // returns "6VX4790YA"
fromDateTime
从 PHP DateTime 对象生成 CDT。
$dateTime = \DateTime::createFromFormat("Y-m-d H:i:s.u", "2017-08-01 14:45:56.789"); $cdt = CDT::fromDateTime($dateTime); // returns "OU0H0K0LX"
toMicrotime
将 CDT 转换为 microtime(浮点)数字。
$micro = CDT::toMicrotime("6VX4790YA"); // returns 416410245.1234
toDateTime
将 CDT 转换为 PHP DateTime 对象。
$dateTime = CDT::toDateTime("6VX4790YA"); // returns an instance of DateTime
DateWriter
将 DateTime 对象转换为书面日期/时间。
$dw = new DateWriter( \DateTime $dt, string $language ); $dw->write(string $format);
格式选项
接受所有 PHP DateTimeInterface::format
字符。
括号内([]
)的内容将不会以任何方式改变。
默认情况下,所有月份和星期的名称都定义为标题大小写,要转换大小写,请使用标记
*{ ... }
转换为大写。%{ ... }
转换为小写。
国际化
可用于写入月份和星期名称的语言。
用法
use Torugo\Util\DateWriter\DateWriter; $dateTime = \DateTime::createFromFormat("Y-m-d H:i:s", "2017-08-01 15:30:45"); $dw = new DateWriter($dateTime, "pt"); $dw->write("[São Paulo,] j [de] %{F} [de] Y"); // São Paulo, 1 de agosto de 2017 $dw->write("*{l}"); // TERÇA-FEIRA
SemVer
验证并比较语义版本号。版本号必须遵循 semver.org 规则
用法
use Torugo\Util\SemVer\SemVer; $version = new SemVer("1.0.0"); $version->compareTo("1.0.0"); // returns VersionComparison::Equal $version->compareTo("1.0.1"); // returns VersionComparison::Smaller $version->compareTo("1.0.0-beta"); // returns VersionComparison::Bigger
TBase64(URL安全)
对可用于 URL 的字符串进行 Base64 编码和解码。
用法
use Torugo\Util\TBase64\TBase64; $b64 = TBase64::encode("My String"); // => "TXkgU3RyaW5n" $decoded = TBase64::decode($b64); // => "My String"
TEncrypt
使用对称密钥加密/解密字符串。
注意
对称密钥
表示用于加密的密钥必须与解密时相同。
每个加密算法都有一个最小密钥长度(以字节为单位),请查看下面的表格。
用法
use Torugo\Util\TEncrypt\TEncrypt; use Torugo\Util\TEncrypt\Enums\TCipher; $text = "May the force be with you!"; $key = "ye-PaJYnFPluROpIFo146zhQNvKHbUkIKNMc2rkd8rE"; $encrypted = TEncrypt::encrypt($text, $key,); // Encrypts the text $decrypt = TEncrypt::decrypt($encrypted,$key); // Decrypts the encrypted text
加密算法
使用 TCipher 枚举设置新的加密算法。
设置加密算法:
TEncrypt::setCipher(TCipher::CAMELLIA_256_OFB);
所有支持加密算法的列表,默认为 AES_256_CFB
。
TFile
通过解析内容来操作文本文件。
use Torugo\Util\TFile\TFile;
检查文件是否存在
静态方法 exists
返回给定路径中的文件是否存在,您可以使用 createIfNotExists
参数在文件不存在时创建文件。
TFile::exists(string $path, bool $createIfNotExists): bool
创建文件
静态方法 create
尝试在给定路径上创建文件。
成功返回 true
或失败返回 false
。
TFile::create(string $path): bool
检查文件是否可写
$file = new TFile(__DIR__ . "/file.txt"); $isWritable = $file->isWritable();
加载文件行
将文本文件的行作为数组返回
$file = new TFile(__DIR__ . "/file.txt"); $lines = $file->getLines();
解析.env文件
将 env
文件的内容解析为关联数组。
$file = new TFile(__DIR__ . "/.env"); $env = $file->parseEnv();
解析.json文件
加载 JSON 文件内容并返回它作为关联数组。
在无效的情况下返回空数组。
$file = new TFile(__DIR__ . "/file.json"); $json = $file->parseJson();
解析.key文件
加载.key文件内容并从中返回密钥。
密钥文件是一个包含密钥分割成行的文本文件。
密钥必须被-----BEGIN-----
和-----END-----
所包围。
.key文件示例
-----BEGIN-----
UjNbMRDfsFyfEtgMVXUhhUqNiIEWxNyChFzuTRFwWgupYgbgnseckyLXmQTzjdyf
nQnmKFAiPQCyTjpqiBlewFUPdBlViQejeCZaLlLvbzLSAZgKUcRDWGqiPCrxhprO
BozroybWrtgzUfkdQbDzukaEidtADbsQQUTteFSIlNvyrrbbYJpzAkFrGiexsjOb
sSSwNsYcCzyRTDQoJIemWtGAJMyPSTJoaGTbShtJejVRmhPwpmcTFImkaKXIPNnl
HOQKUDnhoDQFXVsFueCFXRfrEPiieJSJUEGBmmCJFoMFNOsEVgoXIPMVyaFiZgbi
vZNKyydWKNXqrJfvWwHZPnTvIyGRzgqicEjdnNrlqsLYmKCpjeuVmvteBSIZCuLs
KlcqBtYhbeoTfUesqTwGDftjjSFHNWHirwWPdusiGUqDzjlzJPiaBsosBFyeziHb
kaEdZEpTOUoRYiFAmtiVHqPFFfwxytrzQkwfoGORYviXdyfRYYfcOLKZlwoDUMnm
dsUrbfhhScMFUrPtRijXiuTwkcyacOTojJEvtafFgiETIPzHfvNiXFFxYmNhbftJ
hMwvJQpYwykHNekNYFJbIfepGErQrAxuDSeOddKKgYoDfSeZzbPeabrtavJWjXgb
wSQPVFBJtyEBuyQilRHKQduJOKOBYuwOhlWvJzqxeywCAaAYFyVtHcSFjyxYVgzy
rKjtjbJnAyyfkAUZawctbPqfCkqovijpoomjLsPIYWOMLkdfyktwCorpbKayFEnJ
OIiGAamMuGMheNadiGJGIAvwJIOcnAugRmiCKFbDWdSgGZZHjdeUbZyEJMJxzPcx
ZKKQEfQqIAZSpGSaKHNsfBLKMhRkEmqIkKTopzPJisPalGJqobiaGMifFPwnzHNd
RCRWklziDGeAbLZAVwByJpFHShtPETUcypXgWNTECHhxsveQtgFqPWqEPQPyFsfW
OrHzAMARDiHywWmmeLGyrrJDTnuXClvVIKvTuUQXwXymnqDmroUXRMbuykvcaGPP
-----END-----
$file = new TFile(__DIR__ . "/mykey.key"); $key = $file->parseKeyFile();
TPass
生成随机密码,并检查密码强度
use Torugo\Util\TPass\TPass;
选项
注意
当启用beginWithALetter
时,请确保启用includeLowercase
或includeUppercase
。
设置符号源
默认的符号来源是!;#$%&()*+,-./:;<=>?@[]^_{|}~
;
要设置自定义的符号来源,请使用方法setSymbols
。
检查密码强度
要检查密码强度,请使用方法checkPasswordStrength
;
它返回一个0到4的整数值,其中
0 = Very week
1 = week
2 = medium
3 = strong
4 = very strong
示例
"123456" => 0,
"112233" => 0,
"admin" => 0,
"password" => 0,
"psw1223!A" => 1,
"NU$;K^9" => 2,
"NU$;k3+" => 3,
"NU$;K^+B#D!;+D%8nP" => 4,
"123456NU$;K^+B#D!;+D%8nP" => 4,
TUID(Torugo唯一ID)
生成带有日期和时间的随机唯一ID。
use Torugo\Util\TUID\TUID;
此工具可以生成三种类型的ID
生成
$short = TUID::short(); $medium = TUID::medium(); $long = TUID::long();
验证
$tuid = "PVA4M433-20L5-K1HVUPLQW-TL0SHULDI0VT"; TUID::validate($tuid); // returns true
获取日期和时间
$tuid = "PVA4M433-20L5-K1HVUPLQW-TL0SHULDI0VT"; TUID::getDateTime($tuid); // returns a PHP DateTime instance
TRandom
生成随机字符串和数字
use Torugo\Util\TRandom\TRandom; $tRandom = new TRandom;
随机字符串
设置用于生成随机字符串的源字符。
$rnd = $tRandom->string(10); // Generates 10 chars long random string
参数
设置源字符
$random->alpha = "ABCDEF"; $random->numbers = "123"; $random->symbols = "#$%&*"; $str = $random->string(10); // Generates a random string with the given characters.
随机数
生成给定范围内的随机整数。
$tRandom->number(1001, 9999); // Generates a random number between 1001 and 9999
带前导零的随机数
生成带有前导零的正随机整数。
$tRandom->lzNumber(1, 9999, 4); // 0001 ... 9999 $tRandom->lzNumber(1001, 999999, null); // 001001 ... 999999
特质
空值特质
为特定类型返回一个空值。
use Torugo\Util\Traits\EmptyValues; class MyClass { use EmptyValues; function myFunction() { // ... $type = $this->getEmptyValueForType(gettype($var)); // ... } }
从数组工厂
从键=>值数组中实例化一个类。
- 密钥必须等于属性名称。
- 所有属性都必须设置为public。
示例
use Torugo\Util\Traits\FromArrayFactory; class UserDto { use FromArrayFactory; public string $name; public string $email; public string $password; } $payload = [ "name" => "Full User Name", "email" => "user@gmail.com", "password" => "SuperStrongPassword!", ]; $instance = UserDto::fromArray($payload); // $instance->name ==> "Full User Name" // $instance->email ==> "user@gmail.com" // $instance->password ==> "SuperStrongPassword!"
贡献
目前不对贡献开放,我打算尽快使其可用。
许可
本库使用MIT许可证许可 - 有关详细信息,请参阅LICENSE文件。