/** * Check callee allowed. * @param string $filePath * @param array|null &$callee * @param string|null &$error * @return bool */ function is_callee_allowed(string $filePath, array &$callee = null, string &$error = null) : bool { $callee = get_callee(4); if (strpos($callee['file'], $filePath)) { $error = sprintf('Call from bad scope! class: %s::%s() file: %s:%d', $callee['class'], $callee['function'], $callee['file'], $callee['line']); return false; } return true; }
function glog_str_from_num($int, $lang = GLOG_DEFAULT_LANG) { // Возвращает число прописью. ЭКСПЕРИМЕНТАЛЬНО: до 19999 и только по-русски. if (!is_int($int)) { glog_dosyslog(__FUNCTION__ . get_callee() . ": ERROR: Wrong parameter int:" . $int . ". Should be integer. Returned as is."); return $int; } if ($int > 19999) { glog_dosyslog(__FUNCTION__ . get_callee() . ": ERROR: Function is experimental. Max number supported is 19999. " . int . " given. Returned as is."); return $int; } $num = strrev((string) $int); $len = strlen($num); $str = ""; $tmp = array(); for ($i = 0; $i < $len; $i++) { switch ($lang) { case "RU": default: if (in_array($i, array(0, 3))) { if (isset($num[$i + 1]) && $num[$i + 1] == 1) { switch ($num[$i]) { case "0": $tmp[$i] = "десять"; break; case "1": $tmp[$i] = "одиннадцать"; break; case "2": $tmp[$i] = "двенадцать"; break; case "3": $tmp[$i] = "тринадцать"; break; case "4": $tmp[$i] = "четырнадцать"; break; case "5": $tmp[$i] = "пятнадцать"; break; case "6": $tmp[$i] = "шестнадцать"; break; case "7": $tmp[$i] = "семнадцать"; break; case "8": $tmp[$i] = "восемнадцать"; break; case "9": $tmp[$i] = "девятнадцать"; break; } } else { switch ($num[$i]) { case "0": if ($len == 1) { $tmp[$i] = "ноль"; } else { $tmp[$i] = ""; } break; case "1": $tmp[$i] = "один"; break; case "2": $tmp[$i] = "два"; break; case "3": $tmp[$i] = "три"; break; case "4": $tmp[$i] = "четыре"; break; case "5": $tmp[$i] = "пять"; break; case "6": $tmp[$i] = "шесть"; break; case "7": $tmp[$i] = "семь"; break; case "8": $tmp[$i] = "восемь"; break; case "9": $tmp[$i] = "девять"; break; } } } if (in_array($i, array(1))) { switch ($num[$i]) { case "0": $tmp[$i] = ""; break; case "1": $tmp[$i] = ""; break; case "2": $tmp[$i] = "двадцать"; break; case "3": $tmp[$i] = "тридцать"; break; case "4": $tmp[$i] = "сорок"; break; case "5": $tmp[$i] = "пятьдесят"; break; case "6": $tmp[$i] = "шестьдесят"; break; case "7": $tmp[$i] = "семьдесят"; break; case "8": $tmp[$i] = "восемьдесят"; break; case "9": $tmp[$i] = "девяносто"; break; } } if (in_array($i, array(2))) { switch ($num[$i]) { case "0": $tmp[$i] = ""; break; case "1": $tmp[$i] = "сто"; break; case "2": $tmp[$i] = "двести"; break; case "3": $tmp[$i] = "триста"; break; case "4": $tmp[$i] = "четыреста"; break; case "5": $tmp[$i] = "пятьсот"; break; case "6": $tmp[$i] = "шестьсот"; break; case "7": $tmp[$i] = "семьсот"; break; case "8": $tmp[$i] = "восемьсот"; break; case "9": $tmp[$i] = "девятьсот"; break; } } if (in_array($i, array(3))) { if (isset($num[$i + 1]) && $num[$i + 1] == 1) { $tmp[$i] .= " тысяч"; break; } else { switch ($num[$i]) { case "0": $tmp[$i] = ""; break; case "1": $tmp[$i] = "одна тысяча"; break; case "2": $tmp[$i] = "две тысячи"; break; case "3": $tmp[$i] = "три тысячи"; break; case "4": $tmp[$i] = "четыре тысячи"; break; case "5": $tmp[$i] = "пять тысяч"; break; case "6": $tmp[$i] = "шесть тысяч"; break; case "7": $tmp[$i] = "семь тысяч"; break; case "8": $tmp[$i] = "восемь тысяч"; break; case "9": $tmp[$i] = "девять тысяч"; break; } } } } } switch ($lang) { case "RU": default: $str = implode(" ", array_reverse($tmp)); } return $str; }