Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file modified composer.json
100755 → 100644
Empty file.
1 change: 0 additions & 1 deletion phpunit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
<testsuite name="Rudra-Router">
<directory suffix=".php">tests</directory>
<exclude>tests/Stub</exclude>
<exclude>tests/RouterAnnotationTraitTest.php</exclude>
</testsuite>
</testsuites>
<source>
Expand Down
4 changes: 1 addition & 3 deletions src/Attributes/AfterMiddleware.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
<?php

declare(strict_types=1);
<?php declare(strict_types=1);

/**
* This Source Code Form is subject to the terms of the Mozilla Public
Expand Down
4 changes: 1 addition & 3 deletions src/Attributes/Middleware.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
<?php

declare(strict_types=1);
<?php declare(strict_types=1);

/**
* This Source Code Form is subject to the terms of the Mozilla Public
Expand Down
2 changes: 1 addition & 1 deletion src/Attributes/Routing.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?php
<?php declare(strict_types=1);

/**
* This Source Code Form is subject to the terms of the Mozilla Public
Expand Down
19 changes: 10 additions & 9 deletions src/Router.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@

namespace Rudra\Router;

use ReflectionException;
use Rudra\Container\Traits\SetRudraContainersTrait;
use Rudra\Exceptions\MiddlewareException;
use Rudra\Exceptions\RouterException;
Expand All @@ -30,6 +29,7 @@ class Router implements RouterInterface
* Sets the route, parsing HTTP methods (if multiple are specified via |).
* Registers a route handler for each method.
*/
#[\Override]
public function set(array $route): void
{
$httpMethods = str_contains($route['method'], '|')
Expand Down Expand Up @@ -99,9 +99,9 @@ private function handleRequestMethod(): void
private function handlePattern(array $route, array $request): array
{
$uri = [];
$params = null;
$params = null;
$subject = explode('/', ltrim($route['url'], '/'));
$count = count($subject);
$count = count($subject);

for ($i = 0; $i < $count; $i++) {
if (preg_match("/^:[a-zA-Z0-9_-]+$/", $subject[$i]) > 0 && array_key_exists($i, $request)) {
Expand All @@ -115,7 +115,7 @@ private function handlePattern(array $route, array $request): array
if (array_key_exists($i, $request)) {
$pattern = $matches[1];
if (preg_match("/^$pattern$/", $request[$i])) {
$uri[] = $request[$i];
$uri[] = $request[$i];
$params[] = $request[$i];
} else {
$uri[] = '!@#$%^&*';
Expand Down Expand Up @@ -159,10 +159,11 @@ private function setCallable(array $route, ?array $params): void
*
* @throws RouterException
*/
#[\Override]
public function directCall(array $route, ?array $params = null): void
{
$controller = $this->rudra->get($route['controller']);
$action = $route['action'];
$action = $route['action'];

if (!method_exists($controller, $action)) {
throw new RouterException("Service Unavailable", 503);
Expand Down Expand Up @@ -215,8 +216,8 @@ private function callActionThroughReflection(?array $params, string $action, obj
];
}

$method = $this->reflectionCache[$cacheKey]['method'];
$arguments = $this->rudra()->getParamsIoC($method, $params);
$method = $this->reflectionCache[$cacheKey]['method'];
$arguments = $this->rudra->getParamsIoC($method, $params);
$method->invokeArgs($controller, $arguments);
}

Expand Down Expand Up @@ -250,10 +251,10 @@ private function callActionThroughException(?array $params, string $action, obje
}
} catch (\ArgumentCountError $e) {
$trace = $e->getTrace()[0];
$this->rudra()->autowire($this->rudra()->get($trace['class']), $trace['function']);
$this->rudra->autowire($this->rudra->get($trace['class']), $trace['function']);
} catch (\TypeError $e) {
$trace = $e->getTrace()[0];
$this->rudra()->autowire($this->rudra()->new($trace['class']), $trace['function'], $trace['args']);
$this->rudra->autowire($this->rudra->new($trace['class']), $trace['function'], $trace['args']);
}
}

Expand Down
1 change: 0 additions & 1 deletion src/Traits/RouterAnnotationTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
namespace Rudra\Router\Traits;

use Rudra\Annotation\Annotation;
use Rudra\Container\Interfaces\RudraInterface;

trait RouterAnnotationTrait
{
Expand Down
171 changes: 171 additions & 0 deletions src/tests/coverage-html/Attributes/AfterMiddleware.php.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Code Coverage for /home/d/Public/Development/Rudra-Framework/Rudra-Router/src/Attributes/AfterMiddleware.php</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="../_css/bootstrap.min.css?v=14.2.0" rel="stylesheet" type="text/css">
<link href="../_css/octicons.css?v=14.2.0" rel="stylesheet" type="text/css">
<link href="../_css/style.css?v=14.2.0" rel="stylesheet" type="text/css">
<link href="../_css/custom.css" rel="stylesheet" type="text/css">
</head>
<body>
<header>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="../index.html">/home/d/Public/Development/Rudra-Framework/Rudra-Router/src</a></li>
<li class="breadcrumb-item"><a href="index.html">Attributes</a></li>
<li class="breadcrumb-item active">AfterMiddleware.php</li>

</ol>
</nav>
</div>
</div>
</div>
</header>
<div class="container-fluid">
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<td>&nbsp;</td>
<td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="3"><div align="center"><strong>Lines</strong></div></td>
<td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
<td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
</tr>
</thead>
<tbody>
<tr>
<td class="danger">Total</td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="visually-hidden">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="visually-hidden">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="visually-hidden">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
</tr>

<tr>
<td class="danger">AfterMiddleware</td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="visually-hidden">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="visually-hidden">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">2</td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="visually-hidden">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
</tr>

<tr>
<td class="danger">&nbsp;<a href="#15"><abbr title="__construct(string $name, string|null $params)">__construct</abbr></a></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="visually-hidden">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="visually-hidden">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">2</td>
<td class="danger" colspan="3"></td>
</tr>


</tbody>
</table>
</div>
<table id="code" class="table table-borderless table-condensed">
<tbody>
<tr class=" d-flex"><td class="col-1 text-end"><a id="1" href="#1">1</a></td><td class="col-11 codeLine"><span class="default">&lt;?php&nbsp;</span><span class="keyword">declare</span><span class="keyword">(</span><span class="default">strict_types</span><span class="keyword">=</span><span class="default">1</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="2" href="#2">2</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="3" href="#3">3</a></td><td class="col-11 codeLine"><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="4" href="#4">4</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;*&nbsp;This&nbsp;Source&nbsp;Code&nbsp;Form&nbsp;is&nbsp;subject&nbsp;to&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;Mozilla&nbsp;Public</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="5" href="#5">5</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;*&nbsp;License,&nbsp;v.&nbsp;2.0.&nbsp;If&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;MPL&nbsp;was&nbsp;not&nbsp;distributed&nbsp;with&nbsp;this</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="6" href="#6">6</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;*&nbsp;file,&nbsp;You&nbsp;can&nbsp;obtain&nbsp;one&nbsp;at&nbsp;https://mozilla.org/MPL/2.0/.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="7" href="#7">7</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="8" href="#8">8</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;*&nbsp;@author&nbsp;&nbsp;Korotkov&nbsp;Danila&nbsp;(Jagepard)&nbsp;&lt;jagepard@yandex.ru&gt;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="9" href="#9">9</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;*&nbsp;@license&nbsp;https://mozilla.org/MPL/2.0/&nbsp;&nbsp;MPL-2.0</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="10" href="#10">10</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="11" href="#11">11</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="12" href="#12">12</a></td><td class="col-11 codeLine"><span class="default">#[</span><span class="default">\Attribute</span><span class="keyword">(</span><span class="default">\Attribute</span><span class="default">::</span><span class="default">TARGET_METHOD</span><span class="default">&nbsp;</span><span class="keyword">|</span><span class="default">&nbsp;</span><span class="default">\Attribute</span><span class="default">::</span><span class="default">IS_REPEATABLE</span><span class="keyword">)</span><span class="keyword">]</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="13" href="#13">13</a></td><td class="col-11 codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">AfterMiddleware</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="14" href="#14">14</a></td><td class="col-11 codeLine"><span class="keyword">{</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="15" href="#15">15</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="16" href="#16">16</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="default">string</span><span class="default">&nbsp;</span><span class="default">$name</span><span class="keyword">,</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="17" href="#17">17</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="default">string</span><span class="keyword">|</span><span class="default">null</span><span class="default">&nbsp;</span><span class="default">$params</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">null</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-end"><a id="18" href="#18">18</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-end"><a id="19" href="#19">19</a></td><td class="col-11 codeLine"><span class="keyword">}</span></td></tr>

</tbody>
</table>


<footer>
<hr/>
<h4>Legend</h4>
<p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
<p>
<small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 14.2.0</a> using <a href="https://www.php.net/" target="_top">PHP 8.4.21</a> and <a href="https://phpunit.de/">PHPUnit 13.2.0</a> at Tue Jun 23 7:07:33 UTC 2026.</small>
</p>
<a title="Back to the top" id="toplink" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
</a>
</footer>
</div>
<script src="../_js/jquery.min.js?v=14.2.0" type="text/javascript"></script>
<script src="../_js/bootstrap.bundle.min.js?v=14.2.0" type="text/javascript"></script>
<script src="../_js/file.js?v=14.2.0" type="text/javascript"></script>
</body>
</html>
Loading
Loading