dbwebb-se / mvc

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

Hur blir jag av med phpstan valideringsfel i config/router.php för $router #5

Open mosbth opened 3 years ago

mosbth commented 3 years ago

I kmom02 fanns det ett par valideringsfel i config/router.php som phpstan signalerar för.

------ ----------------------------------------  
 Line   config/router.php                        
------ ----------------------------------------  
 15     Variable $router might not be defined.   
 20     Variable $router might not be defined.   
 21     Variable $router might not be defined.   
 22     Variable $router might not be defined.   
 24     Variable $router might not be defined.   
 29     Variable $router might not be defined.   
------ ----------------------------------------  

[ERROR] Found 6 errors                           

Du kan enkelt bli av med dem genom att sätta följande konstruktion global $router; som anger att det finns en sådan variabel men den är deklarerad på en annan plats.

declare(strict_types=1);

use FastRoute\RouteCollector;

global $router;

$router->addRoute("GET", "/test", function () {
    // A quick and dirty way to test the router or the request.
    return "Testing response";
});

Det är inte en optimal lösning, men det tar hand om valideringsfelet och koden för att konfigurera $router fungerar som tänkt.

mosbth commented 3 years ago

Hmm, fixen löser validatorns bekymmer men andra bekymmer (som att sidan inte fungerar) tillkommer.

Men, som någon påpekade i chatten, omman deklarerar variabeln $router = null; i sin frontcontroller htdocs/index.php så löser det valideringafelet och koden fungerar.

Nåja, det är en fix som inte är orimlig i sammanhanget.

mosbth commented 3 years ago

Nej igen, attans. I torsdagsgenomgången ville jag visa hur vackert det fungerade men jag hade fel igen...

Tillbaka till ritbordet och i värsta fall så kan vi disabla detta felet för just den här filen, men jag ska försöka en gång till, att göra det på ett mer korrekt sätt...

RobIsr commented 3 years ago

Jag använde följande som löste problemet: $router = $router?? null;

mosbth commented 3 years ago

Bra gjort. Den kör vi på.