/
Malenych
/
techart_test
Обзор
Документация
Войти
/
Malenych
/
techart_test
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
engine/Path.php
90 строк
2 KB
Andrey Malenko
Рефакторинг кода классов
25 янв 2026, 18:04
25 янв 2026, 18:04
f930e34
Код
Авторство
О чём код?
<?php namespace Engine; /** * Описывает путь */ class Path { private $address = []; private $reg = ''; public function __construct( public string $full_path ) { $this->splitAddress($full_path); $this->makeRegExp(); } /** * Делит адрес на составляющие * @param string $path * @return void */ private function splitAddress(string $path): void { $this->address = self::split($path); } /** * Делит адрес для переданного пути на составляющие массива * @param string $path * @return string[] */ public static function split(string $path): array { $address = explode('/', $path); if (empty($address[0])) { array_shift($address); } return $address; } /** * Создает регулярное выражение для строки * @return void */ private function makeRegExp(): void { $reg = '^\/?'; for ($i = 0; $i < count($this->address); $i++) { switch ($this->address[$i]) { case '<text>': $reg .= '[a-zA-Z0-9]+'; break; case '<number>': $reg .= '[0-9]+'; break; default: $reg .= $this->address[$i]; } // Если это не последний элемент, то добавить слеш if ($i !== count($this->address) - 1) { $reg .= '\/'; } } $reg .= '\/?$'; $this->reg = $reg; } /** * Возвращает значение регулярного выражения * @return string */ public function getReg(): string {return $this->reg;} /** * Возвращает массив адреса * @return string[] */ public function getAddress(): array {return $this->address;} /** * Возвращает полный адрес * @return string */ public function __toString(): string {return $this->full_path;} }