/laravel-chained

Chain methods from any class by piping to another in PHP

Primary LanguagePHPMIT LicenseMIT

Build Status Latest Stable Version Total Downloads Latest Unstable Version Latest Monthly Downloads License

About Laravel-chained

Laravel chained help to chain method calls on any class.

Do it Like a PRO 🆗

Installation

  • composer require transprime-research/laravel-chained

Quick Usage

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); //7

You use:

$value = chained(Str::class, )
    ->to('lower', 'ChainedOnStr')
    ->to('snake')
    ->to('before', '_')
    ->to('length')(); //14

Or Aliased method calls:

$value = chained(Str::class)
    ->lower('ChainedOnStr')
    ->snake()
    ->before('_')
    ->length()(); //7

Other Usages

tap() method

$value = chained(Str::class)
    ->to('lower', 'ChainedOnStr')
    ->tap(function ($res) {
        var_dump($res);
    })
    ->to('snake')
    ->to('length')
    ->up(); //Up is used instead of ()

Coming Soon

Chain on more classes

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

Additional Information

This package is part of a series of "Code Dare".

See other packages in this series here:

Contributions

For new features, checkout with prefix feature/#issueid e.g feature/#100-add-auto-deploy

  • Clone this repository
  • run sh dockerizer.sh or bash dockerizer.sh
  • execute into the docker environment with docker-compose exec conditional sh (sh can be another bash)
  • run tests with vendor/bin/phpunit

The docker setup was made easy using Laravel Dockerizer

Similar packages

Licence

MIT (See LICENCE file)