projek-xyz/slim-framework

View on GitHub
src/helpers.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php
 
use Projek\Slim\Container;
 
if (!function_exists('app')) {
/**
* @param string|null $name
*
* @return mixed
*/
function app($name = null)
{
/** @var Container $app */
$app = Container::instance();
 
if (null !== $name && $app->has($name)) {
return $app->get($name);
}
 
return $app;
}
}
 
if (!function_exists('dump')) {
/**
* Dump data
*/
function dump()
{
array_map(function ($params) {
var_dump($params);
}, func_get_args());
 
exit;
}
}
 
if (!function_exists('directory')) {
/**
* @param string $path
* @param string|null $relative
*
* @return string
*/
function directory($path, $relative = null)
{
if (empty($path)) {
return config('directories.root');
}
 
$paths = explode('.', $path);
$first = array_shift($paths);
$dir = config('directories.'.$first);
 
if (is_string($relative) && !empty($relative)) {
$dir = str_replace(directory($relative), '', $dir);
}
 
return $dir.($paths ? implode(DIRECTORY_SEPARATOR, $paths).DIRECTORY_SEPARATOR : '');
}
}
 
if (!function_exists('config')) {
/**
* @param string $name
* @param string|null $default
*
* @return mixed Setting
*/
function config($name, $default = null)
{
/** @var \Slim\Collection $settings */
$settings = app('settings');
 
if (strpos($name, '.') === false) {
return $settings->get($name, $default);
}
 
return array_get($settings, $name, $default);
}
}
 
if (!function_exists('logger')) {
/**
* @param integer $level
* @param string $message
* @param array $context
*
* @return bool Whether
*/
function logger($level, $message, array $context = [])
{
return app('logger')->log($level, $message, $context);
}
}
 
if (!function_exists('base_url')) {
/**
* Get application base url
*
* @param string $permalink
*
* @return string
*/
function base_url($permalink = '')
{
/** @var \Slim\Http\Uri $uri */
$uri = app('request')->getUri();
 
return $uri->getBaseUrl().'/'.ltrim($permalink, '/');
}
}
 
if (!function_exists('path_for')) {
/**
* @param string $name
* @param array $data
* @param array $queryParams
*
* @return string
*/
function path_for($name, array $data = [], array $queryParams = [])
{
return app('router')->pathFor($name, $data, $queryParams);
}
}
 
if (!function_exists('array_get')) {
/**
* Get an item from array using 'dot' notation
*
* @aee https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Arr.php#L238-L269
* @param array|\Slim\Collection $array
* @param string $key
* @param mixed $default
*
* @return mixed
*/
Function `array_get` has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
function array_get($array, $key, $default = null)
{
if ($array instanceof \Slim\Collection) {
$array = $array->all();
}
 
if (null === $key) {
return $default;
}
 
if (array_key_exists($key, $array)) {
return $array[$key];
}
 
if (strpos($key, '.') !== false) {
foreach (explode('.', $key) as $segment) {
if (array_key_exists($segment, $array)) {
$array = $array[$segment];
}
}
 
return $array;
}
 
return $default;
}
}
 
if (!function_exists('array_devide')) {
/**
* Divide an array into two arrays. One with keys and the other with values.
*
* @see https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Arr.php#L63-L72
* @param array $array
* @return array
*/
function array_devide(array $array)
{
return [array_keys($array), array_values($array)];
}
}
 
if (!function_exists('sizes_to_bites')) {
function sizes_to_bites($size)
{
$size = trim($size);
$last = strtolower($size[strlen($size)-1]);
 
switch ($last) {
case 'g':
$size *= 1024; // fall-through
case 'm':
$size *= 1024; // fall-through
case 'k':
$size *= 1024; // fall-through
}
 
return $size;
}
}