Laravel chained help to chain method calls on any class.
Do it Like a PRO 🆗
- composer require transprime-research/laravel-chained
Say we have this class with a lot of static methods. Instead of:
$value = Str::lower('ChainedOnStr');
$value = Str::snake($value);
$value = Str::before($value, '_');
$value = Str::length($value); //7You use:
$value = chained(Str::class, )
    ->to('lower', 'ChainedOnStr')
    ->to('snake')
    ->to('before', '_')
    ->to('length')(); //14Or Aliased method calls:
$value = chained(Str::class)
    ->lower('ChainedOnStr')
    ->snake()
    ->before('_')
    ->length()(); //7$value = chained(Str::class)
    ->to('lower', 'ChainedOnStr')
    ->tap(function ($res) {
        var_dump($res);
    })
    ->to('snake')
    ->to('length')
    ->up(); //Up is used instead of ()use Transprime\Chained\Chained;
$value = chained(DB::class)->to('resolveDb', 'ChainedOnStr')
    ->chain(Str::class, function (Chained $chain) {
        return $chain->to('lower')->to('snake');
    })
    ->chain(Arr::class, function (Chained $chain) {
        return $chain->to('wrap')->to('add', 1, 'using_add');
    })();
    
//Or
chained(DB::class)
    ->to('resolveDb', 'ChainedOnStr')
    ->chain(Str::class) // next calls use `Str` class
    ->to('lower')->to('snake')
    ->chain(Arr::class) // next calls use `Arr` class
    ->to('wrap')->to('add', 1, 'using_add')();Api implementation to be decided
This package is part of a series of "Code Dare".
See other packages in this series here:
- A smart PHP if...elseif...else statement https://github.com/omitobi/conditional
- A functional PHP pipe in object-oriented way https://github.com/transprime-research/piper
- Array now an object https://github.com/transprime-research/arrayed
- A smart PHP try...catch statement https://github.com/transprime-research/attempt
- A smart Carbon + Collection package https://github.com/omitobi/carbonate
- Jsonable Http Request(er) package with Collections response https://github.com/omitobi/laravel-habitue
For new features, checkout with prefix feature/#issueid e.g feature/#100-add-auto-deploy
- Clone this repository
- run sh dockerizer.shorbash dockerizer.sh
- execute into the docker environment with docker-compose exec conditional sh(shcan be another bash)
- run tests with vendor/bin/phpunit
The docker setup was made easy using Laravel Dockerizer
MIT (See LICENCE file)
