app(); } /** * Get config values * * @param string $key * @param mixed|null $default * @return mixed */ function config(string $key, mixed $default = null): mixed { return Kernel::instance()->config($key, $default); } /** * Get Redis instance * * @return Redis */ function redis(): Redis { return Kernel::instance()->redis(); } /** * Returns any value as boolean * * @param mixed $value * @return bool */ function bool(mixed $value): bool { is_string($value) && $value = strtolower(trim($value)); $positives = [true, 1, '1', '+', 'yes', 'on', 'true', 'enable', 'enabled']; if (in_array($value, $positives, true)) { return true; } $negatives = [false, 0, '0', '-', 'no', 'off', 'false', 'disable', 'disabled']; if (in_array($value, $negatives, true)) { return false; } return (bool)$value; } /** * Проверяет значениен на пустоту * * @param $value * @return bool */ function is_blank($value): bool { if (is_null($value)) { return true; } if (is_string($value)) { return trim($value) === ''; } if (is_numeric($value) || is_bool($value)) { return false; } if ($value instanceof Countable) { return count($value) === 0; } return empty($value); } /** * Возвращает натуральное представление значения переменной или null * * @param mixed $value * @return int|null */ function int(mixed $value): ?int { if (is_blank($value)) { return null; } $filtered = filter_var($value, FILTER_VALIDATE_INT); return $filtered === false ? (int)$value : $filtered; } /** * Возвращает первый элемент массива без перемотки указателя * * @param array $array Входной массив * @param callable|null $callback Замыкание для предварительной фильтрации вх. массива * @return mixed */ function array_first(array $array, ?callable $callback = null): mixed { is_null($callback) || $array = array_filter($array, $callback); return $array[array_key_first($array)] ?? null; } /** * Возвращает последний элемент массива без перемотки указателя * * @param array $array Входной массив * @param callable|null $callback Замыкание для предварительной фильтрации вх. массива * @return mixed */ function array_last(array $array, ?callable $callback = null): mixed { is_null($callback) || $array = array_filter($array, $callback); return $array[array_key_last($array)] ?? null; } /** * Get ini-file instance * * @return IniFile */ function ini(): IniFile { return Kernel::instance()->ini(); }