Почему опция case в операторе switch, не содержащая перерыва, автоматически переходит к следующему случаю без проверки?
try {
switch($param) {
case "created":
if(!($value instanceof \DateTime))
throw new \Exception("\DateTime expected, ".gettype($value)." given for self::$param");
case "Creator":
if(!($value instanceof \Base\User)) {
throw new \Exception(get_class($value)." given. \Base\User expected for self::\$Creator");
}
default:
$this->$param = $value;
break;
}
} catch(Exception $e) {
echo $e->getMessage();
}
] Если параметр «создан», он выполнит проверку в созданном случае, что хорошо. Когда проверка прошла успешно, я хочу, чтобы код продолжал использовать параметр по умолчанию, поэтому нет перерыва ;. Но вместо этого он продолжает "Создатель", пока $ param! = "Создатель"!
Я знаю, как решить эту проблему (просто добавьте код по умолчанию в моем случае "created"), но я не люблю повторять этот код слишком часто. На самом деле мой вопрос: почему это продолжается со случаем «Создатель», а кейс не «Создатель».