yiisoft / file-router
Convention-based file structure router
                                    Fund package maintenance!
                                                                            
                                                                                                                                        Opencollective
                                                                                    
                                                                            
                                                                                                                                        yiisoft
                                                                                    
                                                                
Installs: 22
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 13
Forks: 0
Open Issues: 1
pkg:composer/yiisoft/file-router
Requires
- php: ^8.1
 - ext-mbstring: *
 - psr/http-message: ^1.0|^2.0
 - psr/http-server-handler: ^1.0
 - psr/http-server-middleware: ^1.0
 - yiisoft/middleware-dispatcher: ^5.2
 
Requires (Dev)
- httpsoft/http-message: ^1.1
 - httpsoft/http-response: ^1.1
 - maglnet/composer-require-checker: ^4.7
 - phpunit/phpunit: ^10.5
 - rector/rector: ^2.0.3
 - roave/infection-static-analysis-plugin: ^1.34
 - spatie/phpunit-watcher: ^1.23
 - vimeo/psalm: ^5.16
 - yiisoft/test-support: ^3.0
 
This package is auto-updated.
Last update: 2025-10-18 12:21:01 UTC
README
Yii File Router
The package provides a convention-based router middleware that chooses controller based on its namespace and class name.
Requirements
- PHP 8.1 or higher.
 
Installation
The package could be installed with Composer:
composer require yiisoft/file-router
General usage
- 
Add
\Yiisoft\FileRouter\FileRouterto the list of middlewares in your application configuration,web/params.php:return [ 'middlewares' => [ // ... Router::class, \Yiisoft\FileRouter\FileRouter::class, // or [ 'class' => FileRouter::class, 'withNamespace()' => ['App'], 'withBaseControllerDirectory()' => ['Controller'], ], // ... ] ];
 - 
Configure the file router for your needs.
 
Note:
FileRoutergoes after regularRouterto serve as a fallback in case explicitly defined route is not found.
By default, the following structure of the app could be used assuming App points to src directory:
src
  Controller
    User
      Profile
        IndexController.php
      BlogController.php
    UserController.php
    IndexController.php
Here's how it works:
GET /→IndexController::index()GET /user→UserController::index()POST /user→UserController::create()GET /user/blog/view→User/BlogController::view()GET /user/profile→User/Profile/IndexController::index()
Documentation
For additional information, check the following docs:
- Guide: English, Português - Brasil
 - Internals
 
If you need help or have a question, the Yii Forum is a good place for that. You may also check out other Yii Community Resources.
License
The Yii File Router is free software. It is released under the terms of the BSD License.
Please see LICENSE for more information.
Maintained by Yii Software.