swisnl/carwash

Data scrubber for Laravel applications
2,591
Install
composer require swisnl/carwash
Latest Version:0.3.0
PHP:^8.3
License:MIT
Last Updated:Jun 12, 2026
Links: GitHub  ·  Packagist
Maintainer: swisnl

Carwash

Latest Version on Packagist Software License Build Status

Carwash is a data scrubbing utility for Laravel applications

Installation

Install via composer
composer require swisnl/carwash

Usage

1. Publish default config file
php artisan vendor:publish
2. Edit config file at config/carwash.php for your application
<?php

return [
    'users' => [
        'first_name' => 'firstName',
        'last_name' => 'lastName',
        'email' => 'safeEmail'
    ],
    'addresses' => [
        'street' => 'streetAddress',
        'city' => 'city',
        'zip' => 'postcode'
    ],
   'bios' => [
        'content' => 'sentences:2'   
    ]
];

Carwash uses the fabulous Faker package under the hood to generate replacement data. Please refer to the Faker documentation for a complete list of available formatters.

More generally, the format of the Carwash config file is:

<?php

return [
    '[TABLE_NAME]' => [
        '[COLUMN_NAME]' => '[Faker Formatter][:argument1,argument2]'
    ]
];
3. Run Scrub Command
php artisan carwash:scrub

Other

Instead of passing a Faker Formatter as the value for each field in your Carwash config file, alternatively you can set the field value to a Callable that returns the new field value. This closure will receive an instance of Faker and the current value of the attribute being scrubbed.

<?php

return [
    'users' => [
        'name' => function ($faker, $currentValue) {
            return "{$faker->firstName} {$faker->lastName}";
        },
        'bio' => BioFormatter::class
    ]
];

class BioFormatter
{
    public function __invoke($faker)
    {
        return $faker->sentences(42);
    }
}

Callables can also replace entire table configurations allowing full control over what data is scrubbed and how.

<?php

return [
    'users' => function ($faker, $user) {
        $firstName = $faker->firstName;
        $lastName = $faker->lastName;
    
        return [
            'first_name' => $firstName,
            'last_name' => $lastName,
            'email' => $firstName . "." . $lastName. "@" . $faker->safeEmailDomain,
            'phone' => substr($user['phone'], 0, 3) . "-555-" . $faker->randomNumber(4)
        ];
    },
];

Testing

$ composer test

Security

If you discover any security related issues, please email security@swis.nl instead of using the issue tracker.

Credits

This package is a fork of dansoppelsa/carwash with updated Laravel support.

License

The MIT License (MIT). Please see License File for more information.

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

641,106,524 9,700
laravel/framework

The Laravel Framework.

593,882,149 34,959
laravel/tinker

Powerful REPL for the Laravel framework.

502,645,077 7,441
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

418,291,778 609
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

394,964,158 4,660

Version History

Version Released PHP Laravel License
0.3.0 ^8.3 ^12.0|^13.0 MIT
0.2.0 ^10.0|^11.0|^12.0 MIT
0.1.4 ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0 MIT
0.1.3 ^6.0|^7.0|^8.0|^9.0|^10.0 MIT
0.1.2 ^6.0|^7.0|^8.0|^9.0|^10.0 MIT