meowphp / routing
Extendable router
Requires
- php: >=8.0
Requires (Dev)
- phpstan/phpstan: ^1.1
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
Suggests
- maymeow/cake-attribute-routing: >=v0.2.0
README
Extendable Router that uses Attributes to define routes to methods
Installing
You can install this library with composer by running following command
composer require meowphp/routing
Usage
Registering controllers
This router need to have statically registered controllers in array. To do that add somewhere in your app array with controller classes strings:
/** * Register your application's controller here */ $controllers => [ \May\AttributesTest\MainController::class, \May\AttributesTest\Controllers\ExampleController::class ],
Defining routes
To define routes to the action use Route
attribute for your methods:
# Route without attributes #[Route('/hello/{id}/{surname}')] public function sayHello() : string # Route with attributes #[Route("/good-bye")] public function sayGoodBye() : string # Default route #[Route('/')] public function index() : string
Getting new Router instance
To get new router use script as follows.
$router = \Meow\Routing\Router::getRouter($controllers);
Resolving routes
$calledRoute = $this->router->matchFromUri('/your/route');
Getting controller and action
Code above will return instance of route so to get controller and action use functions below
$calledRoute->getController(); $calledRoute->getMethod();
Getting parameters
if ($calledRoute->hasParameters()) { $request = $calledRoute->getParameters(); }
Prefixes
Prefixes can be applied on router class. After applying them router starts with prefix /{prefix}/{action}
.
So instead of defining routes as /users/action
and /users/action-two
You can use Prefix and /users
and
then define route for actions as /action
and /action-two
. Example bellow:
#[Prefix('/api')] class ExampleController extends AppController
License: MIT