PHP допускает недопустимый код в операторах switch

Мне сложно понять, почему следующее не приводит к ошибке компилятора в версии 5.3.3 (исправлено ошибкой в ​​5.2.5 моих коллег):

<?php
    echo "starting\n";

    switch(1) {
        case 2:
            echo "two\n";
            break;
        defalut:        // note the misspelling
            echo "deflaut\n";
    }

    echo "ending\n";

Вместо этого выдачи мне ошибки компилятора (или даже предупреждения) он просто дает следующее:

starting
ending

Однако, если я использую его в операторе if, он дает мне то, что я ожидал:

<?php
    if (1 == deflaut)
        echo "deflaut2\n";

дает:

PHP Notice:  Use of undefined constant deflaut - assumed 'deflaut' in ...

Почему этот? Есть ли где-нибудь параметр, который я могу отключить, чтобы указать, что он строго относится к подобным вещам?

8
задан hakre 18 December 2012 в 18:53
поделиться