Repository navigation
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.