Skip to content

Conversation

@alexmerlin
Copy link
Member

No description provided.

@alexmerlin alexmerlin self-assigned this Mar 12, 2025
@alexmerlin alexmerlin linked an issue Mar 12, 2025 that may be closed by this pull request
@github-actions
Copy link

github-actions bot commented Mar 12, 2025

Qodana for PHP

8 new problems were found

Inspection name Severity Problems
Redundant catch clause ◽️ Notice 8

💡 Qodana analysis was run in the pull request mode: only the changed files were checked
☁️ View the detailed Qodana report

Detected 106 dependencies

Third-party software list

This page lists the third-party software dependencies used in project

Dependency Version Licenses
brick/math 0.12.3 MIT
brick/varexporter 0.6.0 MIT
defuse/php-encryption v2.4.0 MIT
doctrine/collections 2.2.2 MIT
doctrine/common 3.5.0 MIT
doctrine/data-fixtures 2.0.2 MIT
doctrine/dbal 4.2.3 MIT
doctrine/deprecations 1.1.4 MIT
doctrine/event-manager 2.0.1 MIT
doctrine/inflector 2.0.10 MIT
doctrine/instantiator 2.0.0 MIT
doctrine/lexer 3.0.1 MIT
doctrine/migrations 3.8.2 MIT
doctrine/orm 3.3.2 MIT
doctrine/persistence 3.4.0 MIT
dotkernel/dot-cache 4.3.0 MIT
dotkernel/dot-cli 3.9.0 MIT
dotkernel/dot-data-fixtures 1.4.0 MIT
dotkernel/dot-dependency-injection 1.2.0 MIT
dotkernel/dot-errorhandler 4.0.0 MIT
dotkernel/dot-event 4.3.0 MIT
dotkernel/dot-log 4.0.4 MIT
dotkernel/dot-mail 5.3.0 MIT
dotkernel/dot-response-header 3.4.1 MIT
egulias/email-validator 4.0.3 MIT
fig/http-message-util 1.1.5 MIT
laminas/laminas-cli 1.11.0 BSD-3-Clause
laminas/laminas-component-installer 3.5.0 BSD-3-Clause
laminas/laminas-config-aggregator 1.18.0 BSD-3-Clause
laminas/laminas-diactoros 3.5.0 BSD-3-Clause
laminas/laminas-escaper 2.16.0 BSD-3-Clause
laminas/laminas-eventmanager 3.14.0 BSD-3-Clause
laminas/laminas-filter 2.40.0 BSD-3-Clause
laminas/laminas-httphandlerrunner 2.11.0 BSD-3-Clause
laminas/laminas-hydrator 4.16.0 BSD-3-Clause
laminas/laminas-inputfilter 2.31.0 BSD-3-Clause
laminas/laminas-permissions-acl 2.17.0 BSD-3-Clause
laminas/laminas-permissions-rbac 3.7.0 BSD-3-Clause
laminas/laminas-servicemanager 3.23.0 BSD-3-Clause
laminas/laminas-stdlib 3.20.0 BSD-3-Clause
laminas/laminas-stratigility 3.13.0 BSD-3-Clause
laminas/laminas-validator 2.64.2 BSD-3-Clause
lcobucci/clock 3.3.1 MIT
lcobucci/jwt 5.5.0 BSD-3-Clause
league/event 2.2.0 MIT
league/oauth2-server 8.5.5 MIT
league/uri-interfaces 7.5.0 MIT
league/uri 7.5.1 MIT
mezzio/mezzio-authentication-oauth2 2.11.0 BSD-3-Clause
mezzio/mezzio-authentication 1.10.0 BSD-3-Clause
mezzio/mezzio-authorization-acl 1.11.0 BSD-3-Clause
mezzio/mezzio-authorization-rbac 1.8.0 BSD-3-Clause
mezzio/mezzio-authorization 1.10.0 BSD-3-Clause
mezzio/mezzio-cors 1.13.0 BSD-3-Clause
mezzio/mezzio-fastroute 3.12.0 BSD-3-Clause
mezzio/mezzio-hal 2.10.1 BSD-3-Clause
mezzio/mezzio-helpers 5.17.0 BSD-3-Clause
mezzio/mezzio-problem-details 1.15.0 BSD-3-Clause
mezzio/mezzio-router 3.18.0 BSD-3-Clause
mezzio/mezzio-template 2.11.0 BSD-3-Clause
mezzio/mezzio-twigrenderer 2.17.0 BSD-3-Clause
mezzio/mezzio 3.20.1 BSD-3-Clause
nikic/fast-route v1.3.0 BSD-3-Clause
nikic/php-parser v5.4.0 BSD-3-Clause
paragonie/random_compat v9.99.100 MIT
psr/cache 3.0.0 MIT
psr/clock 1.0.0 MIT
psr/container 1.1.2 MIT
psr/event-dispatcher 1.0.0 MIT
psr/http-client 1.0.3 MIT
psr/http-factory 1.1.0 MIT
psr/http-message 2.0 MIT
psr/http-server-handler 1.0.2 MIT
psr/http-server-middleware 1.0.2 MIT
psr/link 1.1.1 MIT
psr/log 3.0.2 MIT
ramsey/collection 2.1.0 MIT
ramsey/uuid-doctrine 2.1.0 MIT
ramsey/uuid 4.7.6 MIT
roave/psr-container-doctrine 5.2.2 BSD-2-Clause
spatie/array-to-xml 3.4.0 MIT
symfony/cache-contracts v3.5.1 MIT
symfony/cache v7.2.4 MIT
symfony/console v7.2.1 MIT
symfony/deprecation-contracts v3.5.1 MIT
symfony/event-dispatcher-contracts v3.5.1 MIT
symfony/event-dispatcher v7.2.0 MIT
symfony/filesystem v7.2.0 MIT
symfony/finder v7.2.2 MIT
symfony/mailer v7.2.3 MIT
symfony/mime v7.2.4 MIT
symfony/polyfill-ctype v1.31.0 MIT
symfony/polyfill-intl-grapheme v1.31.0 MIT
symfony/polyfill-intl-idn v1.31.0 MIT
symfony/polyfill-intl-normalizer v1.31.0 MIT
symfony/polyfill-mbstring v1.31.0 MIT
symfony/service-contracts v3.5.1 MIT
symfony/stopwatch v7.2.4 MIT
symfony/string v7.2.0 MIT
symfony/var-exporter v7.2.4 MIT
symfony/yaml v7.2.3 MIT
twig/twig v3.20.0 BSD-3-Clause
webimpress/safe-writer 2.2.0 BSD-2-Clause
webmozart/assert 1.11.0 MIT
willdurand/negotiation 3.1.0 MIT
zircote/swagger-php 5.0.6 Apache-2.0
Contact Qodana team

Contact us at [email protected]

@alexmerlin
Copy link
Member Author

@MarioRadu If you could take a look especially at my modifications in test/Unit/App/Middleware/DeprecationMiddlewareTest.php where I removed testDeprecationMethodUsesRequestMethod because with handlers we can no longer target the verb-methods we had previously. Also, for this I made some changes in src/App/src/Middleware/DeprecationMiddleware.php as well, removing from method getAttribute the check against $requestMethod.

@alexmerlin
Copy link
Member Author

Here's the latest version of the handler refactoring:
image

@alexmerlin
Copy link
Member Author

The issues reported by Qodana are false-positive errors.
They are caused by the new src/App/src/Middleware/ResponseMiddleware.php responsible with returning:
the response provided by a handler if no error was thrown
OR
the error response if an error thrown was by the handler

The errors are not thrown directly from the code in the try block, that's why Qodana thinks that they are not thrown at all.

@MarioRadu
Copy link
Member

@MarioRadu If you could take a look especially at my modifications in test/Unit/App/Middleware/DeprecationMiddlewareTest.php where I removed testDeprecationMethodUsesRequestMethod because with handlers we can no longer target the verb-methods we had previously. Also, for this I made some changes in src/App/src/Middleware/DeprecationMiddleware.php as well, removing from method getAttribute the check against $requestMethod.

I've seen the changes and they should be fine.

*/
public function handle(ServerRequestInterface $request): ResponseInterface
{
$inputFilter = (new CreateAdminInputFilter())->setData((array) $request->getParsedBody());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if we initialize the input filters in the constructor? Creating them on the fly it's not fully testable because you can't mock them.
(this comment applies to all input filters)
I'm thinking of something like this :

class PostAdminResourceHandler extends AbstractHandler
{
    #[Inject(
        AdminServiceInterface::class,
        CreateAdminInputFilter::class,
    )]
    public function __construct(
        protected AdminServiceInterface $adminService,
        protected CreateAdminInputFilter $inputFilter,
    ) {
    }

    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $this->inputFilter->setData((array) $request->getParsedBody());
        ....
    }

Copy link
Member Author

@alexmerlin alexmerlin Mar 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good! 👍
Will implement it in a different PR.

@arhimede arhimede merged commit b5772dc into 6.0 Mar 14, 2025
29 checks passed
@alexmerlin alexmerlin deleted the issue-384 branch March 14, 2025 11:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

replace controllers with handlers

4 participants