kristianlentino / dieffetech-utils
实用工具
dev-main
2022-03-16 11:48 UTC
Requires
- php: >=7.4
- yiisoft/yii2: ~2.0.14
- yiisoft/yii2-swiftmailer: ~2.0.0 || ~2.1.0
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-16 17:09:23 UTC
README
为我们的项目收集的实用工具。
要安装库和不同的实用工具,请运行以下命令
composer require kristianlentino/dieffetech-utils
数组工具
getArrayForSelect--> 创建一个查询函数,返回用于 select2 的数据
ArrayUtil::getArrayForSelect( get_class(new Admin()), ['adminid',"CONCAT(admin.surname,' ',admin.name,' - ', admin.email) as name"], null, null, 'adminid', 'name', 0, 'name' );
transformArrayModelsToSelect--> 将扩展 Model 类的模型数组转换为 select2 数组,基于 select2 类型ArrayUtil::transformArrayModelsToSelect($models,0,'templateid','name')
array_flatten--> 减少 multidimensional array 的一维$arrayErrors = [ 'message' => [ 'name' => 'Kristian', 'surname' => 'Lentino' ] ]; $messages = ArrayUtil::array_flatten($arrayErrors, false); //il risultato di questa operazione é : Array ( [name] => Kristian [surname] => Lentino )
addQuotesToArrayElements--> 向单维度简单数组中的所有元素添加引号,当在查询中需要使用多个字符串或日期的 IN 子句时非常有用,作为一个引用工具,不需要返回,数组将直接被修改
$types = ['Prova','Kristian','Ciao']; ArrayUtil::addQuotesToArrayElements($types); //senza aggiungere gli apici un'operazione come quella sotto darebbe errore $this->special_courses = Courses::getAll([ 'type' => [ 'operation' => 'IN', 'value' => "(". implode(',',$types) .")" ], 'useridfk' => $this->userid ]);
downCaseArrayElements--> 将字符串数组中的所有字符串转换为小写,作为一个引用工具,不需要返回,数组将直接被修改
$types = ['CIAOOO','PROVAAA','DIEFFETECH']; ArrayUtil::downCaseArrayElements($types); //types ora avrà come valori : ['ciao','prova','dieffetech']
trimArrayElements--> 从字符串数组中删除空格,作为一个引用工具,不需要返回,数组将直接被修改
$types = ['CIA OOO','PROVA AA','DIEFFE TECH']; ArrayUtil::trimArrayElements($types); //types ora avrà come valori : ['CIAO','PROVAAA','DIEFFETECH']
usortByColValue--> 根据某一列的值对数组进行排序(仅适用于 multidimensional array),作为一个引用工具,不需要返回,数组将直接被修改
$names = [ 0 => ['name' => 'Kristian'], 1 => ['name' => 'Christian'], 2 => ['name' => 'Alessandro'], 3 => ['name' => 'Antonino'], ]; //di default ordine in ordine ASC ArrayUtil::usortByColValue($names,'name'); //risultato Array ( [0] => Array ( [name] => Alessandro ) [1] => Array ( [name] => Antonino ) [2] => Array ( [name] => Christian ) [3] => Array ( [name] => Kristian ) )
remove_element_recursive--> 允许从单维度数组中删除选定的键,作为一个引用工具,直接修改数组中的值
$types = [ 0 => ['name' => 'kris','surname' => 'lentino'], 1 => ['name' => 'Antonino','surname' => 'Cirruto'], ]; ArrayUtil::remove_element_recursive($types,'surname'); /* * types ora avrà come valori : [ * 0 => [ * 'name' => 'kris' * ], * 1 => [ * 'name' => 'Antonino' * ] * ] */
array_first_key--> 返回数组的第一个键
$types = [ 0 => ['name' => 'kris','surname' => 'lentino'], 1 => ['name' => 'Antonino','surname' => 'Cirruto'], ]; ArrayUtil::array_first_key($types); //tornerà 0
控制台工具
runCron--> 允许执行 cron 任务,例如,用于大规模发送电子邮件
ConsoleUtil::runCron('cron/revert-student',[$this->userid]); //lancerà il cron revert-student passandogli come parametro l'id dell'utente
日期工具
getDatesInRange--> 获取包含特定范围内日期的数组
$dateStart = '2021-09-10'; $dateEnd = '2021-09-18'; $datesInRange = DatesUtil::getDatesInRange($dateStart,$dateEnd); /** * tornerà il seguente array : * Array ( [0] => 2021-09-10 [1] => 2021-09-11 [2] => 2021-09-12 [3] => 2021-09-13 [4] => 2021-09-14 [5] => 2021-09-15 [6] => 2021-09-16 [7] => 2021-09-17 [8] => 2021-09-18 ) * */
convertDate--> 将日期转换为意大利格式,convertDateTime 执行相同操作但包括小时和分钟$dateStart = '2021-09-10'; $dateStartItaliano = DatesUtil::convertDate($dateStart); /** * tornerà la seguente data : 10/09/2021 */
convertDateToSql--> 将日期转换为美国格式,convertDateTimeToSql 执行相同操作但包括小时、分钟和秒$dateStart = '10/09/2021'; $dateStartAmericano = DatesUtil::convertDateToSql($dateStart); /** * tornerà la seguente data : 2021-09-10 */
convertDateToSql--> 将日期转换为美国格式,convertDateTimeToSql 执行相同操作但包括小时、分钟和秒$dateStart = '10/09/2021'; $dateStartAmericano = DatesUtil::convertDateToSql($dateStart); /** * tornerà la seguente data : 2021-09-10 */
getDayOfThisWeek--> 给定一个全小写的英文星期名称,返回该星期几在这一周中的哪一天$dayName = 'saturday'; $dateSabato = DatesUtil::getDayOfThisWeek($dayName); /** * tornerà la data del sabato di questa settimana, nel mio caso tornerà : 2021-09-25 */
addRemoveToDate--> 允许向日期添加或删除天数、月份和年份$paymentAggreements30 = DatesUtil::addRemoveToDate('2021-10-31','Y-m-d',[ 'days' => [ 'operation' => '-', 'value' => 30 ] ]); /** * tornerà la data passata -30 giorni */ $plusOneYear = DatesUtil::addRemoveToDate('2021-10-31','Y-m-d',[ 'years' => [ 'operation' => '+', 'value' => 1 ] ]); /** * tornerà la data passata come argomento +1 anno */
getLastDayOfMonth--> 返回指定年份(如果为空则为当前年份)的最后一天$lasstMonth = date('m'); $lastDayOfMonth = DatesUtil::getLastDayOfMonth($lastMonth,$lastYear); /* ritornerà l'ultimo giorno del mese passato, se oggi è settembre tornerà 2021-09-30 */
dateDiff--> 返回一个 DateInterval 对象,两者都必须为 Y-m-d 格式$dateStart = '2021-09-10'; $dateEnd = '2021-09-18'; $diff = DatesUtil::dateDiff($dateEnd,$dateStart); /** DateInterval Object ( [y] => 0 [m] => 0 [d] => 8 [h] => 0 [i] => 0 [s] => 0 [f] => 0 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 0 [days] => 8 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 ) */
getNextMonth--> 返回下一个月
安全工具
encryptBykey--> 使用 openssl_encrypt 算法通过加密密钥加密字符串或数字,这在前端需要将 ID 放入 GET 请求时非常有用,而不是将其暴露出来decryptBykey--> 使用 openssl_encrypt 和设置在 params 中的加密密钥解密字符串或数字
文件工具
deleteDirectory--> 删除文件夹及其内部的所有文件
地理位置工具
getCoordinates--> 根据格式为 via,civico,città 的地址(例如,Via rossi 83, Pavia)调用 google maps api,返回位置的纬度和经度,如果存在
Google reCAPTCHA 工具
validateCaptcha--> 检查表单发送的 google captcha (v3) 是否有效
$captcha = GoogleRecaptcha::validateCaptcha(\Yii::$app->params["GOOGLE_CAPTCHA"]["SECRET"]);
图片工具
calculateAspectRatio--> 计算图像的宽高比(如16/9等)的函数
/* torna 1.7777777777778 che sarebbe l'equivalente di dire 16/9 */ ImageUtil::calculateAspectRatio(1920,1080); /* Per tornare la stringa 16:9 basta passare un terzo parametro a true come segue */ ImageUtil::calculateAspectRatio(1920,1080,true);
正则表达式实用工具
一组用于YII规则中的字段验证的正则表达式
//Validazione date inserite correttamente nel formato italiano [['born_date','establishment_date'],'match','pattern' => RegexUtil::REGEX_VALID_DATE,'on' => self::SCENARIO_FORM], //Validazione link inserite correttamente [['website'],'match','pattern' => RegexUtil::REGEX_VALID_URL],
税务代码验证器
Yii2验证器,用于检查输入的税务代码数据的正确性
//Validazione codice fiscale [['fiscal_code'],FiscalCodeValidator::className(),'when' => function($model){ return $model->nationidfk == JobNation::ITALY_ID; },'on' => self::SCENARIO_VALIDATE],
电话号码验证器
Yii2验证器,用于检查输入的电话号码数据的正确性
//Validazione telefono [['telephone'],TelephoneValidator::class],