Мне сложно понять, почему следующее не приводит к ошибке компилятора в версии 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 ...
Почему этот? Есть ли где-нибудь параметр, который я могу отключить, чтобы указать, что он строго относится к подобным вещам?