aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2023-05-15 19:26:48 +0200
committerGravatar GitHub <noreply@github.com> 2023-05-15 19:26:48 +0200
commit2038d50110468d95ff978ba2e8f997175f25ff3b (patch)
treea9bc4bc364fe0c9b452702f3324a2091229e5fce /lib
parentc8d2ead7635e58a5c78d95a9b9a1a74e99a1bcef (diff)
PHPStan Level 7 for Minz_Request, FreshRSS_Feed, Minz_Error (#5400)
* PHPStan Level 7 for Minz_Request * PHPStan Level 7 for FreshRSS_Feed * PHPStan Level 7 for Minz_Error
Diffstat (limited to 'lib')
-rw-r--r--lib/Minz/Error.php52
-rw-r--r--lib/Minz/FrontController.php6
-rw-r--r--lib/Minz/Request.php35
-rw-r--r--lib/Minz/Url.php2
4 files changed, 42 insertions, 53 deletions
diff --git a/lib/Minz/Error.php b/lib/Minz/Error.php
index 15be7b8b4..b6eac5174 100644
--- a/lib/Minz/Error.php
+++ b/lib/Minz/Error.php
@@ -8,34 +8,32 @@
* The Minz_Error class logs and raises framework errors
*/
class Minz_Error {
- public function __construct () { }
+ public function __construct() { }
/**
* Permet de lancer une erreur
* @param int $code le type de l'erreur, par défaut 404 (page not found)
- * @param array<string>|array<string,array<string>> $logs logs d'erreurs découpés de la forme
+ * @param string|array<'error'|'warning'|'notice',array<string>> $logs logs d'erreurs découpés de la forme
* > $logs['error']
* > $logs['warning']
* > $logs['notice']
* @param bool $redirect indique s'il faut forcer la redirection (les logs ne seront pas transmis)
*/
- public static function error(int $code = 404, array $logs = [], bool $redirect = true): void {
- $logs = self::processLogs ($logs);
+ public static function error(int $code = 404, $logs = [], bool $redirect = true): void {
+ $logs = self::processLogs($logs);
$error_filename = APP_PATH . '/Controllers/errorController.php';
- if (file_exists ($error_filename)) {
+ if (file_exists($error_filename)) {
Minz_Session::_params([
'error_code' => $code,
'error_logs' => $logs,
]);
- Minz_Request::forward (array (
- 'c' => 'error'
- ), $redirect);
+ Minz_Request::forward(['c' => 'error'], $redirect);
} else {
echo '<h1>An error occurred</h1>' . "\n";
- if (!empty ($logs)) {
+ if (!empty($logs)) {
echo '<ul>' . "\n";
foreach ($logs as $log) {
echo '<li>' . $log . '</li>' . "\n";
@@ -43,40 +41,40 @@ class Minz_Error {
echo '</ul>' . "\n";
}
- exit ();
+ exit();
}
}
/**
* Returns filtered logs
- * @param array<string,string>|string $logs logs sorted by category (error, warning, notice)
+ * @param string|array<'error'|'warning'|'notice',array<string>> $logs logs sorted by category (error, warning, notice)
* @return array<string> list of matching logs, without the category, according to environment preferences (production / development)
*/
private static function processLogs($logs): array {
- $conf = Minz_Configuration::get('system');
- $env = $conf->environment;
- $logs_ok = array ();
- $error = array ();
- $warning = array ();
- $notice = array ();
+ if (is_string($logs)) {
+ return [$logs];
+ }
+
+ $error = [];
+ $warning = [];
+ $notice = [];
- if (isset ($logs['error'])) {
+ if (isset($logs['error']) && is_array($logs['error'])) {
$error = $logs['error'];
}
- if (isset ($logs['warning'])) {
+ if (isset($logs['warning']) && is_array($logs['warning'])) {
$warning = $logs['warning'];
}
- if (isset ($logs['notice'])) {
+ if (isset($logs['notice']) && is_array($logs['notice'])) {
$notice = $logs['notice'];
}
- if ($env == 'production') {
- $logs_ok = $error;
+ switch (Minz_Configuration::get('system')->environment) {
+ case 'development':
+ return array_merge($error, $warning, $notice);
+ case 'production':
+ default:
+ return $error;
}
- if ($env == 'development') {
- $logs_ok = array_merge ($error, $warning, $notice);
- }
-
- return $logs_ok;
}
}
diff --git a/lib/Minz/FrontController.php b/lib/Minz/FrontController.php
index 3268b5763..8e3008a7d 100644
--- a/lib/Minz/FrontController.php
+++ b/lib/Minz/FrontController.php
@@ -69,11 +69,7 @@ class Minz_FrontController {
$e instanceof Minz_ControllerNotExistException ||
$e instanceof Minz_ControllerNotActionControllerException ||
$e instanceof Minz_ActionException) {
- Minz_Error::error (
- 404,
- array('error' => array ($e->getMessage ())),
- true
- );
+ Minz_Error::error(404, ['error' => [$e->getMessage()]], true);
} else {
self::killApp($e->getMessage());
}
diff --git a/lib/Minz/Request.php b/lib/Minz/Request.php
index f8f9d750e..95cb220bf 100644
--- a/lib/Minz/Request.php
+++ b/lib/Minz/Request.php
@@ -20,8 +20,8 @@ class Minz_Request {
/** @var string */
private static $default_action_name = 'index';
- /** @var array{'c':string,'a':string,'params':array<string,mixed>}|null */
- private static $originalRequest = null;
+ /** @var array{'c'?:string,'a'?:string,'params'?:array<string,mixed>} */
+ private static $originalRequest = [];
/**
* Getteurs
@@ -121,7 +121,7 @@ class Minz_Request {
*/
public static function paramTextToArray(string $key, array $default = []): array {
if (isset(self::$params[$key])) {
- return preg_split('/\R/', self::$params[$key]);
+ return preg_split('/\R/', self::$params[$key]) ?: [];
}
return $default;
}
@@ -141,8 +141,8 @@ class Minz_Request {
];
}
- /** @return array{'c':string,'a':string,'params':array<string,mixed>}|null */
- public static function originalRequest(): ?array {
+ /** @return array{'c'?:string,'a'?:string,'params'?:array<string,mixed>} */
+ public static function originalRequest() {
return self::$originalRequest;
}
@@ -219,7 +219,7 @@ class Minz_Request {
$prefix = self::extractPrefix();
$path = self::extractPath();
- return filter_var("{$protocol}://{$host}{$port}{$prefix}{$path}", FILTER_SANITIZE_URL);
+ return filter_var("{$protocol}://{$host}{$port}{$prefix}{$path}", FILTER_SANITIZE_URL) ?: '';
}
private static function extractProtocol(): string {
@@ -231,11 +231,11 @@ class Minz_Request {
private static function extractHost(): string {
if ('' != $host = ($_SERVER['HTTP_X_FORWARDED_HOST'] ?? '')) {
- return parse_url("http://{$host}", PHP_URL_HOST);
+ return parse_url("http://{$host}", PHP_URL_HOST) ?: 'localhost';
}
if ('' != $host = ($_SERVER['HTTP_HOST'] ?? '')) {
// Might contain a port number, and mind IPv6 addresses
- return parse_url("http://{$host}", PHP_URL_HOST);
+ return parse_url("http://{$host}", PHP_URL_HOST) ?: 'localhost';
}
if ('' != $host = ($_SERVER['SERVER_NAME'] ?? '')) {
return $host;
@@ -276,7 +276,7 @@ class Minz_Request {
private static function extractPath(): string {
$path = $_SERVER['REQUEST_URI'] ?? '';
if ($path != '') {
- $path = parse_url($path, PHP_URL_PATH);
+ $path = parse_url($path, PHP_URL_PATH) ?: '';
return substr($path, -1) === '/' ? rtrim($path, '/') : dirname($path);
}
return '';
@@ -288,7 +288,7 @@ class Minz_Request {
public static function getBaseUrl(): string {
$conf = Minz_Configuration::get('system');
$url = trim($conf->base_url, ' /\\"');
- return filter_var($url, FILTER_SANITIZE_URL);
+ return filter_var($url, FILTER_SANITIZE_URL) ?: '';
}
/**
@@ -374,21 +374,15 @@ class Minz_Request {
}
/**
- * Relance une requête
- * @param string|array{'c'?:string,'a'?:string,'params'?:array<string,mixed>} $url l'url vers laquelle est relancée la requête
- * @param bool $redirect si vrai, force la redirection http
- * > sinon, le dispatcher recharge en interne
+ * Restart a request
+ * @param array{'c'?:string,'a'?:string,'params'?:array<string,mixed>} $url an array presentation of the URL to route to
+ * @param bool $redirect If true, uses an HTTP redirection, and if false (default), performs an internal dispatcher redirection.
*/
public static function forward($url = [], bool $redirect = false): void {
if (empty(Minz_Request::originalRequest())) {
self::$originalRequest = $url;
}
- if (!is_array($url)) {
- header('Location: ' . $url);
- exit();
- }
-
$url = Minz_Url::checkControllerUrl($url);
$url['params']['rid'] = self::requestId();
@@ -433,7 +427,8 @@ class Minz_Request {
if ('application/json' !== self::extractContentType()) {
return;
}
- if ('' === $ORIGINAL_INPUT = file_get_contents('php://input', false, null, 0, 1048576)) {
+ $ORIGINAL_INPUT = file_get_contents('php://input', false, null, 0, 1048576);
+ if ($ORIGINAL_INPUT == false) {
return;
}
if (null === $json = json_decode($ORIGINAL_INPUT, true)) {
diff --git a/lib/Minz/Url.php b/lib/Minz/Url.php
index 809f2c39d..70414f17a 100644
--- a/lib/Minz/Url.php
+++ b/lib/Minz/Url.php
@@ -119,7 +119,7 @@ class Minz_Url {
];
}
- /** @param array<string,string|array<string,string>>|null $url */
+ /** @param array{'c'?:string,'a'?:string,'params'?:array<string,mixed>} $url */
public static function serialize(?array $url = []): string {
if (empty($url)) {
return '';