Skip to content

Releases: wilycode/router

WilyCode Router v0.2.0

Choose a tag to compare

@szymonpietrek-design szymonpietrek-design released this 13 Oct 12:43

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 BoolRule to support case-insensitive boolean values.
  • Improved IntRule to reject integer overflow.
  • Improved FloatRule to 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.2

WilyCode PHP Ecosystem

Part of the WilyCode PHP Ecosystem — independent, reusable PHP components with their own repositories, releases, and Composer packages.