<?php namespace core\traits\Router; trait RouteHelper { /** * @param bool $uri * * @return string */ public function returnCurrentUrl($uri = false): string { if (false == $uri) { $uri = $_SERVER['REQUEST_URI']; } if (1 != strlen($uri) && '/' == substr($uri, 0, 1)) { mb_internal_encoding("UTF-8"); $uri = $this->replacePreg($uri); return mb_substr($uri, 1); } return $uri; } /** * @param string $uri * @param string|null $currentUrl * * @return string */ public function removeSlashes(string $uri, $currentUrl): string { // Если у текущей ссылки в конце есть слеш if (1 != strlen($uri) && '/' == substr($currentUrl, -1)) { // Если у заданного роутера нету слеша - добавляем if ('/' != substr($uri, -1)) { $uri = $uri.'/'; } } elseif (1 != strlen($uri)) { // если у текущей ссылки в конце нету слеша // Если у заданного роутера есть слеш - обрезаем if ('/' == substr($uri, -1)) { mb_internal_encoding("UTF-8"); $uri = mb_substr($uri, 0, -1); } } return $uri; } /** * @param $uri * * @return mixed */ private function replacePreg($uri) { $a = []; $a[0] = '/{/'; $a[1] = '/}/'; $b = []; $b[0] = '('; $b[1] = ')'; return preg_replace( $a, $b, $uri ); } }