From: Johan Cwiklinski Date: Tue, 5 Mar 2024 14:58:11 +0000 (+0100) Subject: Properly use injection X-Git-Url: https://git.agnieray.net/?p=galette.git;a=commitdiff_plain;h=98f11a72a3f6facecac3104147c5930a29ceba89 Properly use injection Missing types on some properties Missing uses --- diff --git a/.composer-require-checker.config.json b/.composer-require-checker.config.json index 3350ddec3..e98c422d0 100644 --- a/.composer-require-checker.config.json +++ b/.composer-require-checker.config.json @@ -93,6 +93,7 @@ "DI\\autowire", "DI\\Container", "DI\\ContainerBuilder", + "DI\\Attribute\\Inject", "// Not detected, do not know why.", "Psr\\Http\\Server\\RequestHandlerInterface" diff --git a/galette/lib/Galette/Controllers/AbstractController.php b/galette/lib/Galette/Controllers/AbstractController.php index 75bda451a..d5ff6c1ff 100644 --- a/galette/lib/Galette/Controllers/AbstractController.php +++ b/galette/lib/Galette/Controllers/AbstractController.php @@ -36,11 +36,26 @@ namespace Galette\Controllers; +use Galette\Core\Db; +use Galette\Core\History; +use Galette\Core\I18n; +use Galette\Core\L10n; +use Galette\Core\Login; +use Galette\Core\Logo; +use Galette\Core\Plugins; +use Galette\Core\Preferences; +use Galette\Core\PrintLogo; +use Galette\Entity\FieldsConfig; +use Galette\Entity\ListsConfig; use Psr\Container\ContainerInterface; +use RKA\Session; +use Slim\Flash\Messages; use Slim\Psr7\Request; use Slim\Psr7\Response; use Slim\Routing\RouteContext; use Slim\Routing\RouteParser; +use DI\Attribute\Inject; +use Slim\Views\Twig; /** * Galette abstract controller @@ -59,94 +74,95 @@ abstract class AbstractController { private $container; /** - * @var \Galette\Core\Db + * @var Db */ #[Inject] - protected $zdb; + protected Db $zdb; /** - * @var \Galette\Core\Login + * @var Login */ #[Inject] - protected $login; + protected Login $login; /** - * @var \Galette\Core\Preferences + * @var Preferences */ #[Inject] - protected $preferences; + protected Preferences $preferences; /** - * @var \Slim\Views\Twig + * @var Twig */ - protected $view; + #[Inject] + protected Twig $view; /** - * @var \Galette\Core\Logo + * @var Logo */ #[Inject] - protected $logo; + protected Logo $logo; /** - * @var \Galette\Core\PrintLogo + * @var PrintLogo */ #[Inject] - protected $print_logo; + protected PrintLogo $print_logo; /** - * @var \Galette\Core\Plugins + * @var Plugins */ #[Inject] - protected $plugins; + protected Plugins $plugins; /** - * @var \Slim\Routing\RouteParser + * @var RouteParser */ #[Inject] - protected $routeparser; + protected RouteParser $routeparser; /** - * @var \Galette\Core\History + * @var History */ #[Inject] - protected $history; + protected History $history; /** - * @var \Galette\Core\I18n + * @var I18n */ #[Inject] - protected $i18n; + protected I18n $i18n; /** - * @var \Galette\Core\L10n + * @var L10n */ #[Inject] - protected $l10n; + protected L10n $l10n; /** - * Session + * @var Session */ #[Inject("session")] - protected $session; + protected Session $session; /** - * @var \Slim\Flash\Messages + * @var Messages */ #[Inject] - protected $flash; + protected Messages $flash; /** - * @var \Galette\Entity\FieldsConfig + * @var FieldsConfig */ #[Inject] - protected $fields_config; + protected FieldsConfig $fields_config; /** - * @var \Galette\Entity\ListsConfig + * @var ListsConfig */ #[Inject] - protected $lists_config; + protected ListsConfig $lists_config; /** * @var array */ #[Inject("members_fields")] - protected $members_fields; + protected array $members_fields; /** * @var array */ #[Inject("members_form_fields")] - protected $members_form_fields; + protected array $members_form_fields; /** * @var array */ #[Inject("members_fields_cats")] - protected $members_fields_cats; + protected array $members_fields_cats; /** * Constructor @@ -156,25 +172,6 @@ abstract class AbstractController public function __construct(ContainerInterface $container) { $this->container = $container; - //set various services we need - $this->zdb = $container->get('zdb'); - $this->login = $container->get('login'); - $this->preferences = $container->get('preferences'); - $this->view = $container->get(\Slim\Views\Twig::class); - $this->logo = $container->get('logo'); - $this->print_logo = $container->get('print_logo'); - $this->routeparser = $container->get(RouteParser::class); - $this->history = $container->get('history'); - $this->i18n = $container->get('i18n'); - $this->l10n = $container->get('l10n'); - $this->session = $container->get('session'); - $this->flash = $container->get('flash'); - $this->fields_config = $container->get('fields_config'); - $this->lists_config = $container->get('lists_config'); - $this->members_fields = $container->get('members_fields'); - $this->members_form_fields = $container->get('members_form_fields'); - $this->members_fields_cats = $container->get('members_fields_cats'); - $this->plugins = $container->get('plugins'); } /** diff --git a/galette/lib/Galette/Core/PluginControllerTrait.php b/galette/lib/Galette/Core/PluginControllerTrait.php index 2108bf125..184a7e4db 100644 --- a/galette/lib/Galette/Core/PluginControllerTrait.php +++ b/galette/lib/Galette/Core/PluginControllerTrait.php @@ -36,6 +36,8 @@ namespace Galette\Core; +use DI\Attribute\Inject; + /** * Plugin controllers trait * diff --git a/galette/lib/Galette/Features/Replacements.php b/galette/lib/Galette/Features/Replacements.php index 8f25d7171..31fb5ad74 100644 --- a/galette/lib/Galette/Features/Replacements.php +++ b/galette/lib/Galette/Features/Replacements.php @@ -53,6 +53,7 @@ use Analog\Analog; use NumberFormatter; use PHPMailer\PHPMailer\PHPMailer; use Slim\Routing\RouteParser; +use DI\Attribute\Inject; /** * Replacements feature diff --git a/phpstan.neon b/phpstan.neon index 8fe578f0c..30624f030 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -15,6 +15,5 @@ parameters: - GALETTE_NIGHTLY ignoreErrors: - '/Instantiated class XHProfRuns_Default not found/' - - '/Attribute class .*\\Inject does not exist./' - '/Cannot access property .* on .*ArrayObject.*/' - '/Access to an undefined property ArrayObject.*/' diff --git a/tests/Galette/Controllers/tests/units/PdfController.php b/tests/Galette/Controllers/tests/units/PdfController.php index 00b79b07f..b8bafd838 100644 --- a/tests/Galette/Controllers/tests/units/PdfController.php +++ b/tests/Galette/Controllers/tests/units/PdfController.php @@ -141,6 +141,7 @@ class PdfController extends GaletteTestCase $response = new \Slim\Psr7\Response(); $controller = new \Galette\Controllers\PdfController($this->container); + $this->container->injectOn($controller); $test_response = $controller->storeModels($request, $response); $this->assertSame( @@ -179,6 +180,7 @@ class PdfController extends GaletteTestCase $response = new \Slim\Psr7\Response(); $controller = new \Galette\Controllers\PdfController($this->container); + $this->container->injectOn($controller); //test with non-logged-in user $test_response = $controller->membersCards($request, $response, $this->adh->id); @@ -243,6 +245,7 @@ class PdfController extends GaletteTestCase $response = new \Slim\Psr7\Response(); $controller = new \Galette\Controllers\PdfController($this->container); + $this->container->injectOn($controller); //test logged-in as superadmin $this->logSuperAdmin(); @@ -285,6 +288,7 @@ class PdfController extends GaletteTestCase $response = new \Slim\Psr7\Response(); $controller = new \Galette\Controllers\PdfController($this->container); + $this->container->injectOn($controller); //test with non-logged-in user $test_response = $controller->membersLabels($request, $response, $this->adh->id); @@ -356,6 +360,7 @@ class PdfController extends GaletteTestCase $response = new \Slim\Psr7\Response(); $controller = new \Galette\Controllers\PdfController($this->container); + $this->container->injectOn($controller); //test logged-in as superadmin $this->logSuperAdmin(); @@ -397,6 +402,7 @@ class PdfController extends GaletteTestCase $response = new \Slim\Psr7\Response(); $controller = new \Galette\Controllers\PdfController($this->container); + $this->container->injectOn($controller); //test with non-logged-in user $test_response = $controller->adhesionForm($request, $response, $this->adh->id); @@ -447,6 +453,7 @@ class PdfController extends GaletteTestCase $response = new \Slim\Psr7\Response(); $controller = new \Galette\Controllers\PdfController($this->container); + $this->container->injectOn($controller); //test no selection $test_response = null; @@ -504,6 +511,7 @@ class PdfController extends GaletteTestCase $response = new \Slim\Psr7\Response(); $controller = new \Galette\Controllers\PdfController($this->container); + $this->container->injectOn($controller); //test not logged $test_response = $controller->contribution($request, $response, $this->contrib->id); diff --git a/tests/Galette/IO/tests/units/CsvIn.php b/tests/Galette/IO/tests/units/CsvIn.php index 9fdc169a9..5b2748171 100644 --- a/tests/Galette/IO/tests/units/CsvIn.php +++ b/tests/Galette/IO/tests/units/CsvIn.php @@ -140,6 +140,7 @@ class CsvIn extends GaletteTestCase //get csv model file to add data in $controller = new \Galette\Controllers\CsvController($this->container); + $this->container->injectOn($controller); $rfactory = new \Slim\Psr7\Factory\RequestFactory(); $request = $rfactory->createRequest('GET', 'http://localhost/models/csv');