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-methods
Insert 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: [email protected]
- Ben Gurney: [email protected]
- 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.