pklink / file-router
Library for mapping files in a directory to routes
Installs: 30
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/pklink/file-router
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: 5.*
This package is not auto-updated.
Last update: 2025-06-07 16:21:30 UTC
README
A library for mapping files in a directory to routes like hello/world
Usage
Router for including PHP files
We have the following file structure:
.
├── example.php
└── includes
├── hello
│ └── world.php
└── hello.php
And here is our example.php
// the source path for including files $sourcePath = new SplFileInfo(__DIR__ . '/includes'); // create router $router = new \FileRouter\Router\IncludeRouter($sourcePath);
Now you can load/include files in the includes-directory
$router->handleRoute('hello'); // include includes/hello.php $router->handleRoute('hello/world'); // include includes/hello/world.php
Or like this:
$router->handleRoute($_GET['r']);
Router for printing txt-files
We have the following file structure:
.
├── example.php
└── docs
├── hello
│ └── world.txt
└── hello.txt
And here is our example.php
// the source path for including files $sourcePath = new SplFileInfo(__DIR__ . '/docs'); // create router $router = new \FileRouter\Router\OutputTxtRouter($sourcePath);
Now you can print/output files in the docs-directory
$router->handleRoute('hello'); // print includes/hello.txt $router->handleRoute('hello/world'); // print includes/hello/world.txt
Advanced Usage
Write your own Router
It is no problem to write and add your own router. Implement the interface \FileRouter\Router or use the abtract implementation of \FileRouter\Router\AbstractImpl, so you only need to implement Router::handleRoute()
class CustomRouter extends \FileRouter\Router\AbstractRouter { public function handleRoute($router) { /* @var \SplFileInfo $routingFile */ $routingFile = $this->getFileByRoute($route); // do something } }
Run Tests
You can use PHPUnit from the vendor-folder.
php composer.phar install --dev php vendor/bin/phpunit tests/
License
This package is licensed under the MIT License. See the LICENSE file for details.