coshi/variator
Generate all combinations of parameter values from a simple config array. Supports enums, integer ranges, callbacks/functions, and cross-referenced variations between fields. Iterate results as arrays keyed by parameter name for easy testing or data generation.
phpunit fixtures, laravel-dusk scenarios).Factory or Seeder). Best used for in-memory combinatorial logic rather than database persistence.DatabaseMigrations or RefreshDatabase traits.Str::random(), Faker, or Factory classes.spatie/data-transfer-object or nunomaduro/collision.tests/Feature/") to limit scope.VariationFactory and VariationsTreeBuilder as Laravel bindings.
// app/Providers/VariatorServiceProvider.php
public function register()
{
$this->app->singleton(VariationFactory::class);
$this->app->singleton(VariationsTreeBuilder::class, function ($app) {
return new VariationsTreeBuilder($app->make(VariationFactory::class));
});
}
Variator::build($config)).TestCase for reusable test data generation.
// tests/TestCase.php
use function App\Variator\variations;
protected function getTestCombinations(array $config): array
{
return variations($config);
}
composer.json as a dev dependency.variations() calls.illuminate/support if using facades).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| PHP version incompatibility | Build failures | Use composer.json override or fork. |
| Callback errors (e.g., undefined method) | Runtime exceptions | Validate callbacks before execution. |
| Memory exhaustion | Script crashes | Limit input size or use batching. |
| Abandoned package | Security/bug risks | Fork or replace after 6–12 months. |
| Incorrect combinatorial logic | Wrong test data | Manual validation of outputs. |
@text cross-referencing").variations()).How can I help you explore Laravel packages today?