我有以下开关盒,但目前包含10个条件。
public function convertParameters(string $key, $value)
{
switch ($key) {
case "office":
case "name":
case "first_name":
case "last_name":
$value = ucfirst($value);
break;
case "email":
$value = strtolower($value);
break;
case "street":
case "city":
$value = ucwords($value);
break;
case "start":
case "end":
$value = \DateTime::createFromFormat("Y-m-d H:i:s", $value);
break;
}
return $value;
}
有人知道我如何改进此功能,使其条件更少吗? (或其他改进)
答案 0 :(得分:1)
您的方法看起来不错,但是如果您正在寻找替代方法,则可以使用从键映射到函数的数组。
$ops = [
"office" => "ucfirst",
"name" => "ucfirst",
"first_name" => "ucfirst",
"last_name" => "ucfirst",
"email" => "strtolower",
"street" => "ucwords",
"city" => "ucwords",
"start" => function($d) { return DateTime::createFromFormat("Y-m-d H:i:s", $d); },
"end" => function($d) { return DateTime::createFromFormat("Y-m-d H:i:s", $d); }
];
if (isset($ops[$key])) {
return $ops[$key]($value);
} else {
return $value;
}