Logrus

<<< Назад

Пользовательские функции

Функции и их применение

В системе имеется папка lib в которой хранятся системные функции, так же можно создать и свои "пользовательские".

В данной папке создаем файл с таким названием my_funcs.php
И содержанием:

<?php

 /**
    * Get wind direction name by direction in degree 
    * @param mixed $degree Wind degree
    * @return string
    */
    function myWindDirection($degree)
   {
      $windDirection = ['С', 'ССВ', 'СВ', 'ВСВ', 'В', 'ВЮВ', 'ЮВ', 'ЮЮВ', 'Ю', 'ЮЮЗ', 'ЮЗ', 'ЗЮЗ', 'З', 'ЗСЗ', 'СЗ', 'ССЗ', 'С'];
      $direction = $windDirection[round($degree / 22.5)];

      return $direction;
   }

  /**
    * Get wind direction name by direction in degree 
    * @param mixed $degree Wind degree
    * @return string
    */
    function myWindDirFull($degree)
   {
      $windDirection = ['Северный', 'Северо-северо-восточный', 'Северо-восточный', 'Восточно-северо-восточный', 'Восточный', 'Восточно-юго-восточный', 'Юго-восточный', 'Юго-юго-восточный', 'Южный', 'Юго-юго-западный', 'Юго-западный', 'Западно-юго-западный', 'Западный', 'Западно-северо-западный', 'Северо-западный', 'Северо-северо-западный', 'Северный'];
      $direction = $windDirection[round($degree / 22.5)];

      return $direction;
}

// Склонение числительных
// string - само число
// ch1 - час, день, год, месяц
// ch2 - часа, дня, года, месяца
// ch3 - часов, дней, лет, месяцев
    function myMorph($string, $ch1, $ch2, $ch3)
   {
      $ff=Array('0','1','2','3','4','5','6','7','8','9');
      if(substr($string,-2, 1)==1 AND strlen($string)>1) $ry=array("0 $ch3","1 $ch3","2 $ch3","3 $ch3" ,"4 $ch3","5 $ch3","6 $ch3","7 $ch3","8 $ch3","9 $ch3");
      else $ry=array("0 $ch3","1 $ch1","2 $ch2","3 $ch2","4 $ch2","5 $ch3","6 $ch3","7 $ch3","8 $ch3","9 $ch3");
      $string1=substr($string,0,-1).str_replace($ff, $ry, substr($string,-1,1));

      return $string1;
}

последняя строчка пустая, после последней закрывающей скобки она 44 будет (парсер съел здесь)

В котором у нас будут находиться две функции (можно аналогично добавить и еще) myWindDirection и myWindDirFull а так же myMorph
Рассмотрим применение последней более подробно:
в классе Users методе setUpdatedText

$this->setProperty('updatedText',myMorph($passed,'секунда','секунды','секунд').' назад');
$this->setProperty('updatedText',myMorph($passed_m,'минута','минуты','минут').' назад');

есть такие строки, на примере первой в зависимости от значения переменной $passed в свойство updatedText будет записываться:
1 - 1 секунда назад
2 - 2 секунды назад
3 - 3 секунды назад
4 - 4 секунды назад
5 - 5 секунд назад
6 - 6 секунд назад
7 - 7 секунд назад
8 - 8 секунд назад
9 - 9 секунд назад
10 - 10 секунд назад

аналогично в методе online

say('У Вас '.myMorph($GMailUnread,' непрочитанное письмо!',' непрочитанных письма!',' непрочитанных писем!'));

в скриптах на погоду

$status.='температура '.myMorph($w,'градус','градуса','градусов').' цельсия, ';
$status2.='Относительная влажность '.myMorph($h,'процент','процента','процентов').'. ';
$status2.=myMorph(round($pressure),'миллиметр','миллиметра','миллиметров').' ртутного столба.';

$status3.=' '.myMorph(round($WindSpeed),'метр','метра','метров').' в секунду, ';
$WindDir=myWindDirFull(gg('ow_fact.wind_direction'));

и т.д.

Подобное:

В Базе знаний через поиск.

Получение списка всех системных функций:
получаем перечень всех функций (правда не в "верблюжьем стиле", а прописными), на примере 92 --> keeplatestlimitedbysize

Идем на гит к ув. автору и вбиваем в поиск
т.е. если вставить в скрипт или метод, такую конструкцию

keepLatestLimitedBySize('./cms/cached/voice', 50*1024*1024); //50Mb

то при запуске оного у вас очистится папка cached/voice до 50 мб

не совсем возможности - библиотека (функция)

Обсуждение (7) (6)

Смотрите так же:
02.12.2019 Charts
30.11.2019 Шаблон поведения. Отправка сообщения на определенный терминал
30.06.2019 Телеграмм. Меню - управление группами ПУ
29.06.2019 Телеграмм. Меню - запуск скриптов (сценариев)
21.10.2018 Настройки громкости
07.10.2018 Примеры кода
29.09.2018 checkState
25.09.2018 Телеграмм. pChart
24.09.2018 Уход за базой данных
05.08.2018 Управление подсветкой на шлюзе Сяоми
21.06.2018 Каталог ссылок
10.06.2018 Меню
08.07.2018 mail()
04.05.2018 Режим "EnergyTariffMode"
02.05.2018 Класс SOpenClose метод logicAction (по-русски "Входная дверь")
22.04.2018 Программы
11.04.2018 Шаблон отображения в классе "ExchangeRates"
05.04.2018 Шаблон отображения в классе "Users"
02.12.2018 Режим "Никого нет дома"
25.02.2018 Бэкап и обслуживание системы

Нижний Тагил, Россия

На форуме: Logrus