Skip to content
This repository was archived by the owner on Oct 20, 2025. It is now read-only.

Commit 9da29f0

Browse files
committed
added handleInvalidParameterType() and caseSensitive() function to api route
1 parent 1e278dc commit 9da29f0

File tree

2 files changed

+45
-10
lines changed

2 files changed

+45
-10
lines changed

src/Foundation/Render.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,15 @@ public static function ApiRoute ()
8888

8989
foreach ($reg_route as $route)
9090
{
91+
$caseSensitive = $route['caseSensitive'] ?? false;
92+
$handleInvalidParameterType = $route['handleInvalidParameterType'] ?? null;
93+
9194
self::$apiMap = $route['map'] ?? null;
9295
self::$route = $route['route'] ?? null;
9396

97+
Application::$handleInvalidParameterType = $handleInvalidParameterType;
98+
Application::$caseInSensitive = !$caseSensitive;
99+
94100
if (self::$route)
95101
{
96102
$static->__route();
@@ -107,10 +113,10 @@ public static function ApiRoute ()
107113
* Placeholder function for handling form routes.
108114
* Currently, the implementation for form routes is not defined.
109115
*/
110-
public static function FormsRoute ()
116+
public static function FormRoute ()
111117
{
112118
self::Load();
113-
$reg_route = $GLOBALS['__registered_forms_routes'] ?? null;
119+
$reg_route = $GLOBALS['__registered_form_routes'] ?? null;
114120

115121
// Future form handling can be implemented here.
116122
}

src/Http/Api.php

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace PhpSlides\Core\Http;
44

5+
use Closure;
56
use PhpSlides\Exception;
67
use PhpSlides\Core\Controller\Controller;
78
use PhpSlides\Core\Http\Interface\ApiInterface;
@@ -22,7 +23,7 @@ class Api extends Controller implements ApiInterface
2223
* The base URL for all API routes. Default is '/api/'
2324
* @var string
2425
*/
25-
public static string $BASE_URL = '/api/';
26+
private string $base_url = '/api/';
2627

2728
/**
2829
* The API version. Default is 'v1'
@@ -34,6 +35,10 @@ class Api extends Controller implements ApiInterface
3435

3536
private ?array $guards = null;
3637

38+
private bool $caseSensitive = false;
39+
40+
private ?Closure $handleInvalidParameterType = null;
41+
3742
private static array $regRoute = [];
3843

3944
private static array $allRoutes;
@@ -101,11 +106,10 @@ public function route (
101106
// checks if $define is set, then assign $define methods to $url & $controller parameters
102107
$url =
103108
$define !== null
104-
? rtrim($define['url'], '/') . '/' . trim($url, '/')
109+
? trim($define['url'], '/') . '/' . trim($url, '/')
105110
: trim($url, '/');
106-
$url = trim($url, '/');
107111

108-
$uri = strtolower(self::$BASE_URL . self::$version . '/' . $url);
112+
$uri = $this->base_url . self::$version . '/' . $url;
109113
self::$regRoute[] = $uri;
110114

111115
$route = [
@@ -146,6 +150,26 @@ public function withGuard (?string ...$guards): self
146150
return $this;
147151
}
148152

153+
public function prefix (?string $url = '/api/'): self
154+
{
155+
$this->base_url = $url;
156+
return $this;
157+
}
158+
159+
public function caseSensitive (): self
160+
{
161+
$route = is_array(self::$regRoute) ? self::$regRoute[0] : self::$regRoute;
162+
$GLOBALS['__registered_api_routes'][$route]['caseSensitive'] = true;
163+
return $this;
164+
}
165+
166+
public function handleInvalidParameterType (Closure $closure): self
167+
{
168+
$route = is_array(self::$regRoute) ? self::$regRoute[0] : self::$regRoute;
169+
$GLOBALS['__registered_api_routes'][$route]['handleInvalidParameterType'] = $closure;
170+
return $this;
171+
}
172+
149173
/**
150174
* Defines a base URL and controller for subsequent route mappings.
151175
*
@@ -179,13 +203,12 @@ public function map (array $rest_url): self
179203
* Get the map value, keys as the route url
180204
*/
181205
$routes = array_keys($rest_url);
182-
$base = strtolower(
183-
self::$BASE_URL .
206+
$base =
207+
$this->base_url .
184208
self::$version .
185209
'/' .
186210
trim($define['url'], '/') .
187-
'/',
188-
);
211+
'/';
189212

190213
/**
191214
* Map route url array to the full base url
@@ -227,6 +250,12 @@ public static function v1 (): self
227250
return self::__callStatic('v1', 0);
228251
}
229252

253+
/**
254+
* Define an API route for version 1.0
255+
* Also in use for defining urls
256+
*
257+
* @return self
258+
*/
230259
public static function v1_0 (): self
231260
{
232261
return self::__callStatic('v1_0', 0);

0 commit comments

Comments
 (0)