### Wild Alaskan Company Routing Assignment You are familar with the Laravel router code no doubt. What we want is to implement from scratch, a simplified version of Laravel's "resource router". https://laravel.com/docs/5.8/controllers#resource-controllers ### Step 1 Given a routes file say `routes.php` We want to be able to declare resources routes. Resource routes will automatically pick up the `HTTP verb` from the web request and execute the corresponding functions in a controller that matches the route name. ### Step 2 Detect and support HTTP verbs automatically For all supported `HTTP verbs`, implement the corresponding execution of the controller method. For example a verb of `GET` will execute the controller method `show`. Here is a table of the all the verbs we want to support. If a controller or method does not exist, then throw an exception. | Verb | Method | |------------------------|---------| | get (with parameter) | show | | get / | index | | post | store | | put | update | | delete | destroy | Here is an example of a `routes.php` file for a hypothetical blog application ``` Route::resource('posts'); Route::resource('users.posts'); Route::resource('categories.posts'); ``` For simplicity, the controller will have to be named based on the route parameter. So for the above example we expect these controllers. ``` PostsController.php UsersPostsController.php CategoriesPostsController.php ``` We will not support custom controller names. Furthermore, the parameters in the route url should be passed to the controller methods. In the above example a url call of `GET /posts/123` should execute the method `show($id)` where `$id` is `123` Another example: a url call of `GET /users/bob/posts/999` should execute `show($name, $id)` where `$name` should evaluate to `bob` and `$id` should evaluate to `999` There is no need to handle any query strings or the actual request payload in a post or put. We only want to see the execution of the controller methods. Bonus: package into a standalone composer library Extra Bonus: Run this inside a docker container