@@ -129,29 +129,29 @@ |
||
| 129 | 129 | return $response instanceof Response ? $response : new Response((string)$response, 200); |
| 130 | 130 | } |
| 131 | 131 | |
| 132 | - public function get(string $pattern, Closure|string $callback, ?string $routeName = null): self |
|
| 132 | + public function get(string $pattern, Closure | string $callback, ?string $routeName = null): self |
|
| 133 | 133 | { |
| 134 | 134 | return $this->mount($pattern, $callback, $routeName, [Request::METHOD_GET]); |
| 135 | 135 | } |
| 136 | 136 | |
| 137 | - public function post(string $pattern, Closure|string $callback, ?string $routeName = null): self |
|
| 137 | + public function post(string $pattern, Closure | string $callback, ?string $routeName = null): self |
|
| 138 | 138 | { |
| 139 | 139 | return $this->mount($pattern, $callback, $routeName, [Request::METHOD_POST]); |
| 140 | 140 | } |
| 141 | 141 | |
| 142 | - public function put(string $pattern, Closure|string $callback, ?string $routeName = null): self |
|
| 142 | + public function put(string $pattern, Closure | string $callback, ?string $routeName = null): self |
|
| 143 | 143 | { |
| 144 | 144 | return $this->mount($pattern, $callback, $routeName, [Request::METHOD_PUT]); |
| 145 | 145 | } |
| 146 | 146 | |
| 147 | - public function delete(string $pattern, Closure|string $callback, ?string $routeName = null): self |
|
| 147 | + public function delete(string $pattern, Closure | string $callback, ?string $routeName = null): self |
|
| 148 | 148 | { |
| 149 | 149 | return $this->mount($pattern, $callback, $routeName, [Request::METHOD_DELETE]); |
| 150 | 150 | } |
| 151 | 151 | |
| 152 | 152 | public function mount( |
| 153 | 153 | string $pattern, |
| 154 | - Closure|string $callback, |
|
| 154 | + Closure | string $callback, |
|
| 155 | 155 | ?string $routeName = null, |
| 156 | 156 | array $methods = [] |
| 157 | 157 | ): self { |
@@ -29,114 +29,114 @@ |
||
| 29 | 29 | * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 30 | 30 | */ |
| 31 | 31 | |
| 32 | - declare(strict_types=1); |
|
| 32 | + declare(strict_types=1); |
|
| 33 | 33 | |
| 34 | - namespace Mabs\Dispatcher; |
|
| 34 | + namespace Mabs\Dispatcher; |
|
| 35 | 35 | |
| 36 | - use Closure; |
|
| 37 | - use Psr\Container\ContainerInterface; |
|
| 36 | + use Closure; |
|
| 37 | + use Psr\Container\ContainerInterface; |
|
| 38 | 38 | |
| 39 | - final class EventDispatcher implements EventDispatcherInterface |
|
| 40 | - { |
|
| 41 | - /** @var array<string, array<array{eventName: string, callback: callable, priority: int}>> */ |
|
| 42 | - private array $listeners = []; |
|
| 39 | + final class EventDispatcher implements EventDispatcherInterface |
|
| 40 | + { |
|
| 41 | + /** @var array<string, array<array{eventName: string, callback: callable, priority: int}>> */ |
|
| 42 | + private array $listeners = []; |
|
| 43 | 43 | |
| 44 | - public function __construct( |
|
| 45 | - private readonly ContainerInterface $container |
|
| 46 | - ) {} |
|
| 44 | + public function __construct( |
|
| 45 | + private readonly ContainerInterface $container |
|
| 46 | + ) {} |
|
| 47 | 47 | |
| 48 | - /** |
|
| 49 | - * Dispatch an event to all registered listeners |
|
| 50 | - * |
|
| 51 | - * @param string $eventName The event to dispatch |
|
| 52 | - * @param mixed $data Optional data to pass to the event listeners |
|
| 53 | - * @return $this |
|
| 54 | - */ |
|
| 55 | - public function dispatch(string $eventName, mixed $data = null): self |
|
| 56 | - { |
|
| 57 | - foreach ($this->getListenersByEvent($eventName) as $event) { |
|
| 58 | - $event['callback']($this->container, $data); |
|
| 59 | - } |
|
| 48 | + /** |
|
| 49 | + * Dispatch an event to all registered listeners |
|
| 50 | + * |
|
| 51 | + * @param string $eventName The event to dispatch |
|
| 52 | + * @param mixed $data Optional data to pass to the event listeners |
|
| 53 | + * @return $this |
|
| 54 | + */ |
|
| 55 | + public function dispatch(string $eventName, mixed $data = null): self |
|
| 56 | + { |
|
| 57 | + foreach ($this->getListenersByEvent($eventName) as $event) { |
|
| 58 | + $event['callback']($this->container, $data); |
|
| 59 | + } |
|
| 60 | 60 | |
| 61 | - return $this; |
|
| 62 | - } |
|
| 61 | + return $this; |
|
| 62 | + } |
|
| 63 | 63 | |
| 64 | - /** |
|
| 65 | - * Remove all listeners for a given event |
|
| 66 | - * |
|
| 67 | - * @param string $eventName The event name to clear |
|
| 68 | - * @return $this |
|
| 69 | - */ |
|
| 70 | - final public function detach(string $eventName): self |
|
| 71 | - { |
|
| 72 | - unset($this->listeners[$eventName]); |
|
| 64 | + /** |
|
| 65 | + * Remove all listeners for a given event |
|
| 66 | + * |
|
| 67 | + * @param string $eventName The event name to clear |
|
| 68 | + * @return $this |
|
| 69 | + */ |
|
| 70 | + final public function detach(string $eventName): self |
|
| 71 | + { |
|
| 72 | + unset($this->listeners[$eventName]); |
|
| 73 | 73 | |
| 74 | - return $this; |
|
| 75 | - } |
|
| 74 | + return $this; |
|
| 75 | + } |
|
| 76 | 76 | |
| 77 | - /** |
|
| 78 | - * Register an event listener |
|
| 79 | - * |
|
| 80 | - * @param string $eventName The event to listen for |
|
| 81 | - * @param callable|array|string $callback The callback to execute |
|
| 82 | - * @param int $priority The priority (higher numbers execute first) |
|
| 83 | - * @return $this |
|
| 84 | - */ |
|
| 85 | - final public function register( |
|
| 86 | - string $eventName, |
|
| 87 | - callable|array|string $callback, |
|
| 88 | - int $priority = 0 |
|
| 89 | - ): self { |
|
| 90 | - $eventName = trim($eventName); |
|
| 91 | - $this->listeners[$eventName] ??= []; |
|
| 77 | + /** |
|
| 78 | + * Register an event listener |
|
| 79 | + * |
|
| 80 | + * @param string $eventName The event to listen for |
|
| 81 | + * @param callable|array|string $callback The callback to execute |
|
| 82 | + * @param int $priority The priority (higher numbers execute first) |
|
| 83 | + * @return $this |
|
| 84 | + */ |
|
| 85 | + final public function register( |
|
| 86 | + string $eventName, |
|
| 87 | + callable|array|string $callback, |
|
| 88 | + int $priority = 0 |
|
| 89 | + ): self { |
|
| 90 | + $eventName = trim($eventName); |
|
| 91 | + $this->listeners[$eventName] ??= []; |
|
| 92 | 92 | |
| 93 | - $this->listeners[$eventName][] = [ |
|
| 94 | - 'eventName' => $eventName, |
|
| 95 | - 'callback' => $this->normalizeCallback($callback), |
|
| 96 | - 'priority' => $priority |
|
| 97 | - ]; |
|
| 93 | + $this->listeners[$eventName][] = [ |
|
| 94 | + 'eventName' => $eventName, |
|
| 95 | + 'callback' => $this->normalizeCallback($callback), |
|
| 96 | + 'priority' => $priority |
|
| 97 | + ]; |
|
| 98 | 98 | |
| 99 | - if (count($this->listeners[$eventName]) > 1) { |
|
| 100 | - usort( |
|
| 101 | - $this->listeners[$eventName], |
|
| 102 | - fn(array $a, array $b): int => $b['priority'] <=> $a['priority'] |
|
| 103 | - ); |
|
| 104 | - } |
|
| 99 | + if (count($this->listeners[$eventName]) > 1) { |
|
| 100 | + usort( |
|
| 101 | + $this->listeners[$eventName], |
|
| 102 | + fn(array $a, array $b): int => $b['priority'] <=> $a['priority'] |
|
| 103 | + ); |
|
| 104 | + } |
|
| 105 | 105 | |
| 106 | - return $this; |
|
| 107 | - } |
|
| 106 | + return $this; |
|
| 107 | + } |
|
| 108 | 108 | |
| 109 | - /** |
|
| 110 | - * Get all registered listeners |
|
| 111 | - * |
|
| 112 | - * @return array<string, array<array{eventName: string, callback: callable, priority: int}>> |
|
| 113 | - */ |
|
| 114 | - public function getListeners(): array |
|
| 115 | - { |
|
| 116 | - return $this->listeners; |
|
| 117 | - } |
|
| 109 | + /** |
|
| 110 | + * Get all registered listeners |
|
| 111 | + * |
|
| 112 | + * @return array<string, array<array{eventName: string, callback: callable, priority: int}>> |
|
| 113 | + */ |
|
| 114 | + public function getListeners(): array |
|
| 115 | + { |
|
| 116 | + return $this->listeners; |
|
| 117 | + } |
|
| 118 | 118 | |
| 119 | - /** |
|
| 120 | - * Get listeners for a specific event |
|
| 121 | - * |
|
| 122 | - * @param string $eventName The event name |
|
| 123 | - * @return array<array{eventName: string, callback: callable, priority: int}> |
|
| 124 | - */ |
|
| 125 | - public function getListenersByEvent(string $eventName): array |
|
| 126 | - { |
|
| 127 | - return $this->listeners[$eventName] ?? []; |
|
| 128 | - } |
|
| 119 | + /** |
|
| 120 | + * Get listeners for a specific event |
|
| 121 | + * |
|
| 122 | + * @param string $eventName The event name |
|
| 123 | + * @return array<array{eventName: string, callback: callable, priority: int}> |
|
| 124 | + */ |
|
| 125 | + public function getListenersByEvent(string $eventName): array |
|
| 126 | + { |
|
| 127 | + return $this->listeners[$eventName] ?? []; |
|
| 128 | + } |
|
| 129 | 129 | |
| 130 | - /** |
|
| 131 | - * Normalize different callback formats to a callable |
|
| 132 | - */ |
|
| 133 | - private function normalizeCallback(callable|array|string $callback): callable |
|
| 134 | - { |
|
| 135 | - return match (true) { |
|
| 136 | - is_callable($callback) => $callback, |
|
| 137 | - is_string($callback) && str_contains($callback, '::') => explode('::', $callback), |
|
| 138 | - is_string($callback) => fn(ContainerInterface $c) => $c->get($callback), |
|
| 139 | - default => throw new \InvalidArgumentException('Invalid callback type') |
|
| 140 | - }; |
|
| 141 | - } |
|
| 142 | - } |
|
| 143 | 130 | \ No newline at end of file |
| 131 | + /** |
|
| 132 | + * Normalize different callback formats to a callable |
|
| 133 | + */ |
|
| 134 | + private function normalizeCallback(callable|array|string $callback): callable |
|
| 135 | + { |
|
| 136 | + return match (true) { |
|
| 137 | + is_callable($callback) => $callback, |
|
| 138 | + is_string($callback) && str_contains($callback, '::') => explode('::', $callback), |
|
| 139 | + is_string($callback) => fn(ContainerInterface $c) => $c->get($callback), |
|
| 140 | + default => throw new \InvalidArgumentException('Invalid callback type') |
|
| 141 | + }; |
|
| 142 | + } |
|
| 143 | + } |
|
| 144 | 144 | \ No newline at end of file |
@@ -84,7 +84,7 @@ discard block |
||
| 84 | 84 | */ |
| 85 | 85 | final public function register( |
| 86 | 86 | string $eventName, |
| 87 | - callable|array|string $callback, |
|
| 87 | + callable | array | string $callback, |
|
| 88 | 88 | int $priority = 0 |
| 89 | 89 | ): self { |
| 90 | 90 | $eventName = trim($eventName); |
@@ -130,7 +130,7 @@ discard block |
||
| 130 | 130 | /** |
| 131 | 131 | * Normalize different callback formats to a callable |
| 132 | 132 | */ |
| 133 | - private function normalizeCallback(callable|array|string $callback): callable |
|
| 133 | + private function normalizeCallback(callable | array | string $callback): callable |
|
| 134 | 134 | { |
| 135 | 135 | return match (true) { |
| 136 | 136 | is_callable($callback) => $callback, |
@@ -59,7 +59,7 @@ |
||
| 59 | 59 | $c['session.storage.handler'] |
| 60 | 60 | ); |
| 61 | 61 | |
| 62 | - $container['session'] = function (Container $app): Session { |
|
| 62 | + $container['session'] = function(Container $app): Session { |
|
| 63 | 63 | if (!isset($app['session.storage'])) { |
| 64 | 64 | $app['session.storage'] = $app['session.storage.native']; |
| 65 | 65 | } |
@@ -173,21 +173,21 @@ |
||
| 173 | 173 | |
| 174 | 174 | public function offsetExists(mixed $offset): bool |
| 175 | 175 | { |
| 176 | - return $this->has((string) $offset); |
|
| 176 | + return $this->has((string)$offset); |
|
| 177 | 177 | } |
| 178 | 178 | |
| 179 | 179 | public function offsetGet(mixed $offset): mixed |
| 180 | 180 | { |
| 181 | - return $this->get((string) $offset); |
|
| 181 | + return $this->get((string)$offset); |
|
| 182 | 182 | } |
| 183 | 183 | |
| 184 | 184 | public function offsetSet(mixed $offset, mixed $value): void |
| 185 | 185 | { |
| 186 | - $this->set((string) $offset, $value); |
|
| 186 | + $this->set((string)$offset, $value); |
|
| 187 | 187 | } |
| 188 | 188 | |
| 189 | 189 | public function offsetUnset(mixed $offset): void |
| 190 | 190 | { |
| 191 | - $this->unset((string) $offset); |
|
| 191 | + $this->unset((string)$offset); |
|
| 192 | 192 | } |
| 193 | 193 | } |
@@ -29,10 +29,10 @@ |
||
| 29 | 29 | * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 30 | 30 | */ |
| 31 | 31 | |
| 32 | - declare(strict_types=1); |
|
| 32 | + declare(strict_types=1); |
|
| 33 | 33 | |
| 34 | - namespace Mabs\Container; |
|
| 34 | + namespace Mabs\Container; |
|
| 35 | 35 | |
| 36 | - use Psr\Container\NotFoundExceptionInterface; |
|
| 36 | + use Psr\Container\NotFoundExceptionInterface; |
|
| 37 | 37 | |
| 38 | 38 | final class ContainerNotFoundException extends \Exception implements NotFoundExceptionInterface {} |
| 39 | 39 | \ No newline at end of file |
@@ -89,7 +89,7 @@ discard block |
||
| 89 | 89 | $path = $route->path(); |
| 90 | 90 | |
| 91 | 91 | foreach ($params as $key => $value) { |
| 92 | - $path = str_replace(['{' . $key . '}', '{' . $key . '?}'], $value, $path); |
|
| 92 | + $path = str_replace(['{'.$key.'}', '{'.$key.'?}'], $value, $path); |
|
| 93 | 93 | } |
| 94 | 94 | |
| 95 | 95 | return $path; |
@@ -105,7 +105,7 @@ discard block |
||
| 105 | 105 | return true; |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | - if (!empty($regex) && preg_match('#^' . $regex . '/?$#', $currentPath, $matches)) { |
|
| 108 | + if (!empty($regex) && preg_match('#^'.$regex.'/?$#', $currentPath, $matches)) { |
|
| 109 | 109 | $params = $route->extractParameters($matches); |
| 110 | 110 | $request->query->add($params); |
| 111 | 111 | return true; |
@@ -122,7 +122,7 @@ discard block |
||
| 122 | 122 | |
| 123 | 123 | return $result instanceof Response |
| 124 | 124 | ? $result |
| 125 | - : new Response((string) $result); |
|
| 125 | + : new Response((string)$result); |
|
| 126 | 126 | } |
| 127 | 127 | |
| 128 | 128 | private function getRouteByName(string $routeName): Route |
@@ -133,6 +133,6 @@ discard block |
||
| 133 | 133 | private function normalizePath(string $path): string |
| 134 | 134 | { |
| 135 | 135 | $normalized = ltrim($path, '/'); |
| 136 | - return str_ends_with($normalized, '/') ? $normalized : $normalized . '/'; |
|
| 136 | + return str_ends_with($normalized, '/') ? $normalized : $normalized.'/'; |
|
| 137 | 137 | } |
| 138 | 138 | } |
@@ -4,7 +4,7 @@ |
||
| 4 | 4 | |
| 5 | 5 | $app = new Mabs\Application(true); |
| 6 | 6 | |
| 7 | -$app->get('hello/{name}', function ($name) { |
|
| 7 | +$app->get('hello/{name}', function($name) { |
|
| 8 | 8 | |
| 9 | 9 | return 'Hello '.$name; |
| 10 | 10 | })->run(); |
| 11 | 11 | \ No newline at end of file |