Make method calls conditional by simply appending If or Unless when you call them. Conditional methods allow you to pass a condition to determine whether they should be run or not, removing the need to wrap them inside logic. This is especially useful when you are chaining.
Install via composer:
composer require webhappens/conditional-methodsInsert the ConditionalMethods trait into your class:
use \WebHappens\ConditionalMethods\ConditionalMethods;If your class is already using the __call method, add the following to it:
public function __call($method, $arguments)
{
if ($type = static::matchConditionalMethod($method)) {
return $this->callConditionalMethod($type, $method, $arguments);
}
// ...
// throw new \BadMethodCallException();
}Append If to the end of any method call and pass your condition as the first argument.
$insurer->renewIf($car->insuranceIsDue(), $car);This replaces the need to do something like:
if ($car->insuranceIsDue()) {
$insurer->renew($car);
}Unless works in the same way as If except the condition is inverted.
Append Unless to the end of any method call and pass your condition as the first argument.
$insurer->renewUnless($car->insuranceIsValid(), $car);- Sam Leicester: sam@webhappens.co.uk
- Ben Gurney: ben@webhappens.co.uk
- Big thanks to the guys over at Spatie for the inspiration on this through their laravel-html package ❤️
- All Contributors
Our Str class is just a copy of some functions from Laravel's Str helper.
The MIT License (MIT). Please see License File for more information.