kristianlentino/dieffetech-utils

dev-main 2022-03-16 11:48 UTC

This package is auto-updated.

Last update: 2024-09-16 17:09:23 UTC


README

为我们的项目收集的实用工具。

要安装库和不同的实用工具,请运行以下命令
composer require kristianlentino/dieffetech-utils

数组工具

  1. getArrayForSelect --> 创建一个查询函数,返回用于 select2 的数据
   ArrayUtil::getArrayForSelect(
       get_class(new Admin()),
       ['adminid',"CONCAT(admin.surname,' ',admin.name,' - ', admin.email) as name"],
       null,
       null,
       'adminid',
       'name',
       0,
       'name'
   ); 
  1. transformArrayModelsToSelect --> 将扩展 Model 类的模型数组转换为 select2 数组,基于 select2 类型
    ArrayUtil::transformArrayModelsToSelect($models,0,'templateid','name')
  2. 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
       )
  3. 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
  ]); 
  1. downCaseArrayElements --> 将字符串数组中的所有字符串转换为小写,作为一个引用工具,不需要返回,数组将直接被修改
  $types = ['CIAOOO','PROVAAA','DIEFFETECH'];
  ArrayUtil::downCaseArrayElements($types);
  //types ora avrà come valori : ['ciao','prova','dieffetech'] 
  1. trimArrayElements --> 从字符串数组中删除空格,作为一个引用工具,不需要返回,数组将直接被修改
  $types = ['CIA   OOO','PROVA  AA','DIEFFE  TECH'];
  ArrayUtil::trimArrayElements($types);
  //types ora avrà come valori : ['CIAO','PROVAAA','DIEFFETECH'] 
  1. 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
      )

)
  1. 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'
   *  ]
   * ]
   */ 
  1. array_first_key --> 返回数组的第一个键
  $types = [
      0 => ['name' => 'kris','surname' => 'lentino'],
      1 => ['name' => 'Antonino','surname' => 'Cirruto'],
  ];
  ArrayUtil::array_first_key($types);
  //tornerà 0 

控制台工具

  1. runCron --> 允许执行 cron 任务,例如,用于大规模发送电子邮件
  ConsoleUtil::runCron('cron/revert-student',[$this->userid]);
  //lancerà il cron revert-student passandogli come parametro l'id dell'utente 

日期工具

  1. 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
    )
  * 
  */
  1. convertDate --> 将日期转换为意大利格式,convertDateTime 执行相同操作但包括小时和分钟
    $dateStart = '2021-09-10';
    $dateStartItaliano = DatesUtil::convertDate($dateStart);
    /**
    *  tornerà la seguente data : 10/09/2021 
    */
  2. convertDateToSql --> 将日期转换为美国格式,convertDateTimeToSql 执行相同操作但包括小时、分钟和秒
    $dateStart = '10/09/2021';
    $dateStartAmericano = DatesUtil::convertDateToSql($dateStart);
    /**
    *  tornerà la seguente data : 2021-09-10 
    */
  3. convertDateToSql --> 将日期转换为美国格式,convertDateTimeToSql 执行相同操作但包括小时、分钟和秒
    $dateStart = '10/09/2021';
    $dateStartAmericano = DatesUtil::convertDateToSql($dateStart);
    /**
    *  tornerà la seguente data : 2021-09-10 
    */
  4. getDayOfThisWeek --> 给定一个全小写的英文星期名称,返回该星期几在这一周中的哪一天
    $dayName = 'saturday';
    $dateSabato = DatesUtil::getDayOfThisWeek($dayName);
    
    /**
    *  tornerà la data del sabato di questa settimana, nel mio caso tornerà : 2021-09-25 
    */
  5. 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 
    */
  6. getLastDayOfMonth --> 返回指定年份(如果为空则为当前年份)的最后一天
       
       $lasstMonth = date('m');
       $lastDayOfMonth = DatesUtil::getLastDayOfMonth($lastMonth,$lastYear);
       /* ritornerà l'ultimo giorno del mese passato, se oggi è settembre tornerà  2021-09-30  */
  7. 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
    )
    
       */
  8. getNextMonth --> 返回下一个月

安全工具

  1. encryptBykey --> 使用 openssl_encrypt 算法通过加密密钥加密字符串或数字,这在前端需要将 ID 放入 GET 请求时非常有用,而不是将其暴露出来
  2. decryptBykey --> 使用 openssl_encrypt 和设置在 params 中的加密密钥解密字符串或数字

文件工具

  1. deleteDirectory --> 删除文件夹及其内部的所有文件

地理位置工具

  1. getCoordinates --> 根据格式为 via,civico,città 的地址(例如,Via rossi 83, Pavia)调用 google maps api,返回位置的纬度和经度,如果存在

Google reCAPTCHA 工具

  1. validateCaptcha --> 检查表单发送的 google captcha (v3) 是否有效
   $captcha = GoogleRecaptcha::validateCaptcha(\Yii::$app->params["GOOGLE_CAPTCHA"]["SECRET"]);

图片工具

  1. 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],