/
jagepard
/
Rudra-Router
Обзор
Документация
Войти
/
jagepard
/
Rudra-Router
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
2024
src/Traits/RouterRequestMethodTrait.php
108 строк
3 KB
Jagepard
fix tests
24 окт 2023, 15:36
24 окт 2023, 15:36
2d42e7d
Код
Авторство
О чём код?
<?php declare(strict_types=1); /** * @author : Jagepard <jagepard@yandex.ru"> * @license https://mit-license.org/ MIT */ namespace Rudra\Router\Traits; use Rudra\Container\Interfaces\RudraInterface; trait RouterRequestMethodTrait { /** * @param string $pattern * @param $target * @param array $middleware */ public function get(string $pattern, $target, array $middleware = []): void { $this->set(array_merge([$pattern, "GET", $target], [$middleware])); } /** * @param string $pattern * @param $target * @param array $middleware */ public function post(string $pattern, $target, array $middleware = []): void { $this->set(array_merge([$pattern, "POST", $target], [$middleware])); } /** * @param string $pattern * @param $target * @param array $middleware */ public function put(string $pattern, $target, array $middleware = []): void { $this->set(array_merge([$pattern, "PUT", $target], [$middleware])); } /** * @param string $pattern * @param $target * @param array $middleware */ public function patch(string $pattern, $target, array $middleware = []): void { $this->set(array_merge([$pattern, "PATCH", $target], [$middleware])); } /** * @param string $pattern * @param $target * @param array $middleware */ public function delete(string $pattern, $target, array $middleware = []): void { $this->set(array_merge([$pattern, "DELETE", $target], [$middleware])); } /** * @param string $pattern * @param $target * @param array $middleware */ public function any(string $pattern, $target, array $middleware = []): void { $this->set(array_merge([$pattern, "GET|POST|PUT|PATCH|DELETE", $target], [$middleware])); } /** * @param string $pattern * @param string $controller * @param array $middleware * @param array|string[] $actions */ public function resource(string $pattern, string $controller, array $middleware = [], array $actions = ["read", "create", "update", "delete"]): void { switch ($this->rudra->request()->server()->get("REQUEST_METHOD")) { case "GET": $this->set(array_merge([$pattern, "GET", [$controller, $actions[0]]], [$middleware])); break; case "POST": $actionKey = ["GET" => 0, "POST" => 1, "PUT" => 2, "PATCH" => 2, "DELETE" => 3]; $httpMethod = ($this->rudra->request()->post()->has("_method")) ? $this->rudra->request()->post()->get("_method") : "POST"; $this->set(array_merge([$pattern, $httpMethod, [$controller, $actions[$actionKey[$httpMethod]]]], [$middleware])); break; case "PUT": $this->set(array_merge([$pattern, "PUT", [$controller, $actions[2]]], [$middleware])); break; case "DELETE": $this->set(array_merge([$pattern, "DELETE", [$controller, $actions[3]]], [$middleware])); break; } } /** * @param array $route */ abstract public function set(array $route): void; abstract public function rudra(): RudraInterface; }