Створіть клас, схожий на твердження, і вкладіть у нього будь-яку логіку; доки повертаються "істинні" методи $this(і нічого іншого, щоб уникнути помилкових спрацьовувань.)
class Haystack
{
public $value;
public function __construct($value)
{
$this->value = $value;
}
public function isExactly($n)
{
if ($n === $this->value)
return $this;
}
}
$var = new Haystack(null);
switch ($var) {
case $var->isExactly(''):
echo "the value is an empty string";
break;
case $var->isExactly(null):
echo "the value is null";
break;
}
Або ви можете помістити свій перемикач у власне клас:
class Checker
{
public $value;
public function __construct($value)
{
$this->value = $value;
}
public function isExactly($n)
{
if ($n === $this->value)
return $this;
}
public function contains($n)
{
if (strpos($this->value, $n) !== false)
return $this;
}
public static function check($str)
{
$var = new self($str);
switch ($var) {
case $var->isExactly(''):
return "'$str' is an empty string";
case $var->isExactly(null):
return "the value is null";
case $var->contains('hello'):
return "'$str' contains hello";
default:
return "'$str' did not meet any of your requirements.";
}
}
}
var_dump(Checker::check('hello world'));
Звичайно, у цей момент ви можете переоцінити те, що ви хочете зробити з тим, що ви перевіряєте, і замість цього використати справжню бібліотеку перевірки.