Repository navigation
Releases: wilycode/router
Releases · wilycode/router
Release list
WilyCode Router v0.2.0
WilyCode Router v0.2.0
This release introduces new route parameter validation rules, improves existing type validation, and ensures consistent validation when matching routes and generating URLs.
New Features
- RegexRule — validate route parameters using custom regular expressions.
- UuidRule — validate UUID route parameters.
- SlugRule — validate URL-friendly slugs.
- EnumRule — restrict route parameters to a predefined set of allowed values.
- DateRule — validate date parameters and convert them to
DateTimeImmutable.
Improvements
- Improved
BoolRuleto support case-insensitive boolean values. - Improved
IntRuleto reject integer overflow. - Improved
FloatRuleto support negative values and reject non-finite numbers. - Added route parameter validation during URL generation.
- Improved validation of optional route parameters.
- Added support for the new rules in compiled route manifests.
- Expanded PHPUnit tests for parameter validation, URL generation, and compiled routes.
- Updated README documentation with examples of all nine parameter rules.
Example
use WilyCode\Router\Rule\SlugRule;
use WilyCode\Router\Rule\EnumRule;
use WilyCode\Router\Rule\DateRule;
$routes->get(
'articles.show',
'/articles/{slug}',
[ArticleController::class, 'show'],
rules: ['slug' => SlugRule::class],
);
$routes->get(
'articles.status',
'/articles/status/{status}',
[ArticleController::class, 'list'],
rules: [
'status' => new EnumRule(['draft', 'published']),
],
);
$routes->get(
'archive.show',
'/archive/{date}',
[ArchiveController::class, 'show'],
rules: ['date' => DateRule::class],
);Compatibility
- Requires PHP 8.4 or newer.
- Existing route definitions remain supported.
- URL generation now validates parameter values according to their rules. Applications relying on previously accepted invalid values may need adjustments.
Installation
composer require wilycode/router:^0.2WilyCode PHP Ecosystem
Part of the WilyCode PHP Ecosystem — independent, reusable PHP components with their own repositories, releases, and Composer packages.