Conditions

Inspired heavily by Laravel's Collectionsopen in new window, the when() and unless() methods give you the possibility to invoke callbacks, when a condition evaluates to true.

When

when() invokes a callback, if it's first argument evaluates to true.

use Aedart\Contracts\Http\Clients\Requests\Builder;

$builder = $client
        ->when(true, function(Builder $builder){
            $builder->where('name', 'john');
        });

If the first argument evaluate to false, then the method will invoke it's "otherwise" callback, if one is provided.

use Aedart\Contracts\Http\Clients\Requests\Builder;

$builder = $client
        ->when(false, function(Builder $builder){
            // Not invoked...
            $builder->where('name', 'John');
        }, function(Builder $builder){
            // Invoked...
            $builder->where('name', 'Simon');
        });

Unless

The inverse method, unless(), will invoke it's callback if the first argument is not true.

use Aedart\Contracts\Http\Clients\Requests\Builder;

$builder = $client
        ->unless(false, function(Builder $builder){
            $builder->where('name', 'john');
        });

Consequently, if the first argument is true, then it's "otherwise" callback is invoked, when provided.

use Aedart\Contracts\Http\Clients\Requests\Builder;

$builder = $client
        ->unless(true, function(Builder $builder){
            // Not invoked...
            $builder->where('name', 'John');
        }, function(Builder $builder){
            // Invoked...
            $builder->where('name', 'Simon');
        });