millipress / millirules
A declarative rule engine for PHP that turns complex conditional logic into readable when-then rules. Features a fluent builder API, lazy-loaded context for performance, smart operator inference, and works seamlessly in pure PHP or WordPress.
Requires
- php: >=7.4
- ext-json: *
Requires (Dev)
- brainmaestro/composer-git-hooks: ^3.0
- pestphp/pest: ^2.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.7
- szepeviktor/phpstan-wordpress: ^2.0
This package is auto-updated.
Last update: 2026-07-16 20:20:42 UTC
README
A flexible, framework-agnostic rule evaluation engine for PHP 7.4+.
Overview
MilliRules is a powerful rule engine that allows you to define complex conditional logic using a fluent API. It's designed to be framework-agnostic while providing specialized support for HTTP and WordPress environments.
Features
- Fluent API: Build complex rules with an intuitive, chainable syntax
- Framework Agnostic: Core engine works with any PHP application
- Lazy-Loaded Context: On-demand loading of context data for optimal performance
- HTTP Support: Built-in conditions for request handling
- WordPress Integration: Native support for WordPress queries and context
- Extensible: Easy to add custom conditions and actions
- Flexible Naming: Use snake_case or camelCase —
when_all()andwhenAll()both work - PHP 7.4+ Compatible: Works with PHP 7.4+, PHP 8.0+ recommended
Installation
composer require millipress/millirules
Quick Start
use MilliRules\Rules; // Simple HTTP rule Rules::create('api_check') ->when() ->request_url('/api/*') ->then() ->custom( 'auth-check', function($context) { // Your action here }) ->register();
Documentation
See the full documentation for detailed guides and API reference.
Community
The Discord server and GitHub Discussions are places to swap setups, trade tips, and share your ideas for where MilliRules should head next. We're listening.
For bug reports, open a GitHub issue.
License
GPL-2.0-or-later