You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
PHP
45 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Support\Traits;
|
|
|
|
trait Conditionable
|
|
{
|
|
/**
|
|
* Apply the callback if the given "value" is truthy.
|
|
*
|
|
* @param mixed $value
|
|
* @param callable $callback
|
|
* @param callable|null $default
|
|
* @return $this|mixed
|
|
*/
|
|
public function when($value, $callback, $default = null)
|
|
{
|
|
if ($value) {
|
|
return $callback($this, $value) ?: $this;
|
|
} elseif ($default) {
|
|
return $default($this, $value) ?: $this;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Apply the callback if the given "value" is falsy.
|
|
*
|
|
* @param mixed $value
|
|
* @param callable $callback
|
|
* @param callable|null $default
|
|
* @return $this|mixed
|
|
*/
|
|
public function unless($value, $callback, $default = null)
|
|
{
|
|
if (! $value) {
|
|
return $callback($this, $value) ?: $this;
|
|
} elseif ($default) {
|
|
return $default($this, $value) ?: $this;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
}
|