Функции и их применение
В системе имеется папка 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 мб
не совсем возможности - библиотека (функция)
Нижний Тагил, Россия
На форуме: Logrus