Оператор switch без перерыва

Почему опция 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"), но я не люблю повторять этот код слишком часто. На самом деле мой вопрос: почему это продолжается со случаем «Создатель», а кейс не «Создатель».

8
задан Rene Terstegen 11 November 2010 в 14:41
поделиться