Download the PHP package inanepain/routing without Composer
On this page you can find all versions of the php package inanepain/routing. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package routing
Readme: Routing
$Id$ ($Date$)
HTTP Routing using php Attributes.
Intro: Attributes
What is an Attribute? It's a class just like any other class only with the Attribute
Attribute. So why are you treating it more like an enum
or Map
that can only hold a few values describing something? You don't do it with the classes you uses your custom attributes on! But I don't blame you, it all comes down to some pour choices in wording used by the documentation.
So how should I be think of Attributes? As classes naturally. Classes to object that get things done to be more exact. That #[Route(name: 'home', path: '/')]
like might make more sense when you start looking at it like this: $route = new Route('/', 'home');
. Here a fun experiment to try; remove the Attribute
from Route
then have the Router
take an array of Route
parameters as argument. Easy, wasn't it and you understand Attributes and with practice you spot many more classes you can use as such.
Hope that gets you thinking about Attributes in a new, more realistic manor that leads to you adding that #[Attribute]
line to a good many more classes.
Install
composer require inanepain/routing
Usage
Quick overview showing the bits relating to the Route
Attribute
in two examples. Neither are complete, though the simple example would run with minimum fuss. Check the Appendix for the .htaccess
file you will need to use with the index.php
file.
Example: Simple
Super simple example using php built in web server, php -S localhost:8080 -t public index.php
.
MainController.php:
index.php:
Example: Application
Slightly more complex example.
The various pieces
IndexController.php:
index.phtml (view template):
website (rendered view):
Putting it all together
Application.php:
Appendix: .htaccess
You will also need to do some magic in your .htaccess
file so that index.php
handles all requests.