fix: SA: Fix "...does not call parent constructor... and ...Access to an undefined property..." rules.

SA stands for Static Analysis.
This commit is contained in:
Pol Dellaiera 2021-11-16 15:30:53 +01:00
parent a17c22c74f
commit 8879734ea2
No known key found for this signature in database
GPG Key ID: D476DFE9C67467CA
3 changed files with 21 additions and 60 deletions

View File

@ -35,11 +35,6 @@ parameters:
count: 2 count: 2
path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php path: src/Bundle/ChillMainBundle/CRUD/Controller/ApiController.php
-
message: "#^Chill\\\\MainBundle\\\\CRUD\\\\Routing\\\\CRUDRoutesLoader\\:\\:__construct\\(\\) does not call parent constructor from Symfony\\\\Component\\\\Config\\\\Loader\\\\Loader\\.$#"
count: 1
path: src/Bundle/ChillMainBundle/CRUD/Routing/CRUDRoutesLoader.php
- -
message: "#^Cannot unset offset '_token' on array\\{formatter\\: mixed, export\\: mixed, centers\\: mixed, alias\\: string\\}\\.$#" message: "#^Cannot unset offset '_token' on array\\{formatter\\: mixed, export\\: mixed, centers\\: mixed, alias\\: string\\}\\.$#"
count: 1 count: 1

View File

@ -100,11 +100,6 @@ parameters:
count: 1 count: 1
path: src/Bundle/ChillMainBundle/CRUD/Controller/AbstractCRUDController.php path: src/Bundle/ChillMainBundle/CRUD/Controller/AbstractCRUDController.php
-
message: "#^Access to an undefined property Chill\\\\MainBundle\\\\CRUD\\\\Routing\\\\CRUDRoutesLoader\\:\\:\\$apiConfig\\.$#"
count: 2
path: src/Bundle/ChillMainBundle/CRUD/Routing/CRUDRoutesLoader.php
- -
message: "#^Call to an undefined method Chill\\\\MainBundle\\\\Command\\\\ChillImportUsersCommand\\:\\:tempOutput\\(\\)\\.$#" message: "#^Call to an undefined method Chill\\\\MainBundle\\\\Command\\\\ChillImportUsersCommand\\:\\:tempOutput\\(\\)\\.$#"
count: 1 count: 1

View File

@ -1,22 +1,6 @@
<?php <?php
/*
* Chill is a software for social workers declare(strict_types=1);
*
* Copyright (C) 2019, Champs Libres Cooperative SCRLFS, <http://www.champs-libres.coop>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Chill\MainBundle\CRUD\Routing; namespace Chill\MainBundle\CRUD\Routing;
@ -27,22 +11,13 @@ use Symfony\Component\HttpFoundation\Request;
use Chill\MainBundle\CRUD\Controller\ApiController; use Chill\MainBundle\CRUD\Controller\ApiController;
use Chill\MainBundle\CRUD\Controller\CRUDController; use Chill\MainBundle\CRUD\Controller\CRUDController;
/**
* Class CRUDRoutesLoader
* Load the route for CRUD
*
* @package Chill\MainBundle\CRUD\Routing
*/
class CRUDRoutesLoader extends Loader class CRUDRoutesLoader extends Loader
{ {
protected array $crudConfig = []; protected array $crudConfig = [];
protected array $apiCrudConfig = []; protected array $apiCrudConfig = [];
/** private bool $isLoaded = false;
* @var bool
*/
private $isLoaded = false;
private const ALL_SINGLE_METHODS = [ private const ALL_SINGLE_METHODS = [
Request::METHOD_GET, Request::METHOD_GET,
@ -52,19 +27,15 @@ class CRUDRoutesLoader extends Loader
]; ];
private const ALL_INDEX_METHODS = [ Request::METHOD_GET, Request::METHOD_HEAD ]; private const ALL_INDEX_METHODS = [ Request::METHOD_GET, Request::METHOD_HEAD ];
/** public function __construct(array $crudConfig, array $apiCrudConfig)
* CRUDRoutesLoader constructor.
*
* @param $crudConfig the config from cruds
* @param $apicrudConfig the config from api_crud
*/
public function __construct(array $crudConfig, array $apiConfig)
{ {
$this->crudConfig = $crudConfig; $this->crudConfig = $crudConfig;
$this->apiConfig = $apiConfig; $this->apiCrudConfig = $apiCrudConfig;
parent::__construct();
} }
/** /**
* @param mixed $resource * @param mixed $resource
* @param null $type * @param null $type
@ -74,7 +45,7 @@ class CRUDRoutesLoader extends Loader
{ {
return 'CRUD' === $type; return 'CRUD' === $type;
} }
/** /**
* Load routes for CRUD and CRUD Api * Load routes for CRUD and CRUD Api
*/ */
@ -85,17 +56,17 @@ class CRUDRoutesLoader extends Loader
} }
$collection = new RouteCollection(); $collection = new RouteCollection();
foreach ($this->crudConfig as $crudConfig) { foreach ($this->crudConfig as $crudConfig) {
$collection->addCollection($this->loadCrudConfig($crudConfig)); $collection->addCollection($this->loadCrudConfig($crudConfig));
} }
foreach ($this->apiConfig as $crudConfig) { foreach ($this->apiCrudConfig as $crudConfig) {
$collection->addCollection($this->loadApi($crudConfig)); $collection->addCollection($this->loadApi($crudConfig));
} }
return $collection; return $collection;
} }
/** /**
* Load routes for CRUD (without api) * Load routes for CRUD (without api)
* *
@ -112,7 +83,7 @@ class CRUDRoutesLoader extends Loader
$defaults = [ $defaults = [
'_controller' => $controller.':'.($action['controller_action'] ?? $name) '_controller' => $controller.':'.($action['controller_action'] ?? $name)
]; ];
if ($name === 'index') { if ($name === 'index') {
$path = "{_locale}".$crudConfig['base_path']; $path = "{_locale}".$crudConfig['base_path'];
$route = new Route($path, $defaults); $route = new Route($path, $defaults);
@ -126,10 +97,10 @@ class CRUDRoutesLoader extends Loader
]; ];
$route = new Route($path, $defaults, $requirements); $route = new Route($path, $defaults, $requirements);
} }
$collection->add('chill_crud_'.$crudConfig['name'].'_'.$name, $route); $collection->add('chill_crud_'.$crudConfig['name'].'_'.$name, $route);
} }
return $collection; return $collection;
} }
@ -186,14 +157,14 @@ class CRUDRoutesLoader extends Loader
if (count($methods) === 0) { if (count($methods) === 0) {
throw new \RuntimeException("The api configuration named \"{$crudConfig['name']}\", action \"{$name}\", ". throw new \RuntimeException("The api configuration named \"{$crudConfig['name']}\", action \"{$name}\", ".
"does not have any allowed methods. You should remove this action from the config ". "does not have any allowed methods. You should remove this action from the config ".
"or allow, at least, one method"); "or allow, at least, one method");
} }
if ('_entity' === $name && \in_array(Request::METHOD_POST, $methods)) { if ('_entity' === $name && \in_array(Request::METHOD_POST, $methods)) {
unset($methods[\array_search(Request::METHOD_POST, $methods)]); unset($methods[\array_search(Request::METHOD_POST, $methods)]);
$entityPostRoute = $this->createEntityPostRoute($name, $crudConfig, $action, $entityPostRoute = $this->createEntityPostRoute($name, $crudConfig, $action,
$controller); $controller);
$collection->add("chill_api_single_{$crudConfig['name']}_{$name}_create", $collection->add("chill_api_single_{$crudConfig['name']}_{$name}_create",
$entityPostRoute); $entityPostRoute);
} }
@ -205,7 +176,7 @@ class CRUDRoutesLoader extends Loader
$route = new Route($path, $defaults, $requirements); $route = new Route($path, $defaults, $requirements);
$route->setMethods($methods); $route->setMethods($methods);
$collection->add('chill_api_single_'.$crudConfig['name'].'_'.$name, $route); $collection->add('chill_api_single_'.$crudConfig['name'].'_'.$name, $route);
} }