dbwebb-se / mvc

Course repo for the mvc and object orientation in frameworks course - mvc.
Other
1 stars 4 forks source link

phpmd: Avoid using static access to class #6

Open mosbth opened 3 years ago

mosbth commented 3 years ago

I kmom02 example/game/router finns ett valideringsfel från phpmd som säger:

/home/mos/mvc/example/game/router/src/Controller/Debug.php:24 Avoid using static access to class '\Nyholm\Psr7\Stream' in method '__invoke'.

Det handlar om denna koden:

        return (new Response())
            ->withStatus(200)
            ->withBody(Stream::create($body));

Validaotrn gillar inte att man använder hårdkodade klassnamn med statisk access till metoder om det inte är ett "factory designpattern" som skall skapa objekt.

PHPMD säger så här:

Static acccess causes inexchangable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

Just denna koden ovan blev till när jag försökte hitta ett enklare sätt att skapa och returnera svaret, enklare med färre kodrader. Men rent krasst är det bättre att jag går tillbaka och använder det mer korrekta sättet att skapa och returnera svaret.

        // Create and return the response
        $psr17Factory = new Psr17Factory();
        return $psr17Factory
            ->createResponse(200)
            ->withBody($psr17Factory->createStream($body));

Det blir mer rätt och vi undviker det som phpmd varnar oss för.