Skip to content

Commit 856f020

Browse files
committed
Merge branch 'release/0.8.14'
2 parents b9976c7 + d318c56 commit 856f020

File tree

6 files changed

+82
-51
lines changed

6 files changed

+82
-51
lines changed

.version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"strategy": "semver",
33
"major": 0,
44
"minor": 8,
5-
"patch": 13,
5+
"patch": 14,
66
"build": 0
77
}

src/Mvc/Application.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,9 +265,11 @@ public function executeController( array $parameters, string $requestName = '' )
265265
throw new MissingMethod( "Method '$method'' not found." );
266266
}
267267

268-
$request = null;
269-
270-
if( !empty( $requestName ) )
268+
if( empty( $requestName ) )
269+
{
270+
$request = new Request();
271+
}
272+
else
271273
{
272274
$request = $this->getRequest( $requestName );
273275

@@ -281,6 +283,8 @@ public function executeController( array $parameters, string $requestName = '' )
281283
}
282284
}
283285

286+
287+
284288
return $controller->$method(
285289
$parameters,
286290
$request

src/Mvc/Controllers/Base.php

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44

55
use League\CommonMark\Exception\CommonMarkException;
66
use Neuron\Core\Exceptions\BadRequestMethod;
7-
use Neuron\Data\Filter\Get;
8-
use Neuron\Data\Filter\Post;
9-
use Neuron\Data\Filter\Server;
107
use Neuron\Data\Setting\SettingManager;
118
use Neuron\Mvc\Application;
129
use Neuron\Mvc\Cache\CacheConfig;
@@ -18,7 +15,6 @@
1815
use Neuron\Mvc\Views\Html;
1916
use Neuron\Mvc\Views\Json;
2017
use Neuron\Mvc\Views\Markdown;
21-
use Neuron\Mvc\Views\NotFound;
2218
use Neuron\Mvc\Views\Xml;
2319
use Neuron\Routing\Router;
2420

@@ -885,46 +881,4 @@ public function __call( string $method, array $arguments ): ?string
885881
// If no URL helper pattern matches, throw an exception
886882
throw new \BadMethodCallException( "Method '$method' not found in " . static::class );
887883
}
888-
889-
/**
890-
* Filter and retrieve a GET parameter.
891-
*
892-
* @param string $paramName The name of the GET parameter
893-
* @param mixed $default The default value if parameter is not present
894-
* @return mixed The filtered GET parameter value or default
895-
*/
896-
public function filterGet( string $paramName, mixed $default = null ) : mixed
897-
{
898-
$get = new Get();
899-
900-
return $get->filterScalar( $paramName ) ?? $default;
901-
}
902-
903-
/**
904-
* Filter and retrieve a POST parameter.
905-
*
906-
* @param string $paramName The name of the POST parameter
907-
* @param mixed $default The default value if parameter is not present
908-
* @return mixed The filtered POST parameter value or default
909-
*/
910-
public function filterPost( string $paramName, mixed $default = null ) : mixed
911-
{
912-
$post = new Post();
913-
914-
return $post->filterScalar( $paramName ) ?? $default;
915-
}
916-
917-
/**
918-
* Filter and retrieve a SERVER parameter.
919-
*
920-
* @param string $paramName The name of the SERVER parameter
921-
* @param mixed $default The default value if parameter is not present
922-
* @return mixed The filtered SERVER parameter value or default
923-
*/
924-
public function filterServer( string $paramName, mixed $default = null ): mixed
925-
{
926-
$server = new Server();
927-
928-
return $server->filterScalar( $paramName ) ?? $default;
929-
}
930884
}

src/Mvc/Requests/Request.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
namespace Neuron\Mvc\Requests;
44

55
use Neuron\Core\Exceptions\Validation;
6+
use Neuron\Data\Filter\Get;
7+
use Neuron\Data\Filter\Post;
8+
use Neuron\Data\Filter\Server;
9+
use Neuron\Data\Filter\Session;
610
use Neuron\Log\Log;
11+
use Neuron\Routing\DefaultIpResolver;
712
use Neuron\Routing\RequestMethod;
813
use Symfony\Component\Yaml\Yaml;
914

@@ -17,14 +22,79 @@ class Request
1722
private array $_headers = [];
1823
private array $_parameters;
1924
private array $_errors = [];
25+
private DefaultIpResolver $_ipResolver;
26+
private Get $_get;
27+
private Post $_post;
28+
private Server $_server;
29+
private Session $_session;
2030

2131
/**
2232
* Request constructor.
2333
*/
2434
public function __construct()
2535
{
36+
$this->_ipResolver = new DefaultIpResolver();
37+
$this->_get = new Get();
38+
$this->_post = new Post();
39+
$this->_server = new Server();
40+
$this->_session = new Session();
2641
}
2742

43+
/**
44+
* @return string
45+
*/
46+
public function getClientIp(): string
47+
{
48+
return $this->_ipResolver->resolve( $_SERVER );
49+
}
50+
51+
/**
52+
* Filtered GET parameter
53+
* @param string $key
54+
* @param mixed|null $default
55+
* @return mixed
56+
*/
57+
public function get( string $key, mixed $default = null ): mixed
58+
{
59+
return $this->_get->filterScalar( $key, $default );
60+
}
61+
62+
/**
63+
* Filtered POST parameter
64+
* @param string $key
65+
* @param mixed|null $default
66+
* @return mixed
67+
*/
68+
public function post( string $key, mixed $default = null ): mixed
69+
{
70+
return $this->_post->filterScalar( $key, $default );
71+
}
72+
73+
/**
74+
* Filtered SERVER parameter
75+
* @param string $key
76+
* @param mixed|null $default
77+
* @return mixed
78+
*/
79+
public function server( string $key, mixed $default = null ): mixed
80+
{
81+
return $this->_server->filterScalar( $key, $default );
82+
}
83+
84+
/**
85+
*
86+
* @param string $key
87+
* @param mixed|null $default
88+
* @return mixed
89+
*/
90+
public function session( string $key, mixed $default = null ): mixed
91+
{
92+
return $this->_session->filterScalar( $key, $default );
93+
}
94+
95+
/**
96+
* @return array
97+
*/
2898
public function getErrors(): array
2999
{
30100
return $this->_errors;

tests/Mvc/TestController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function partial( array $Parameters, ?Request $Request ) : string
3737
public function no_request( array $Parameters, ?Request $Request )
3838
{
3939
global $ControllerState;
40-
$ControllerState = $Request === null;
40+
$ControllerState = true;
4141
}
4242

4343

versionlog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 0.8.14 2025-11-13
2+
* Dispatched controller methods now always receive request objects, even if empty.
3+
14
## 0.8.13 2025-11-13
25
* Added get/post/server filter wrappers to controller base.
36

0 commit comments

Comments
 (0)