Если вы привыкли к языкам с интеллектуальными логическими операторами, вы будете стараться делать такие вещи, как:
$iShouldTalkTo = $thisObj || $thatObj;
В PHP $iShouldTalkTo
теперь логическое значение. Вы заставили написать:
$iShouldTalkTo = $thisObj ? $thisObj : $thatObj;
Из всех примеров того, как в начале разработки решений в PHP пытался держать руки некомпетентных программистов в обмен на ковыляя компетентных те, которые могут быть один, что меня раздражает в большинство.
Глубокий урон от головного мозга в конструкции switch()
изобилует. Рассмотрим это:
switch($someVal) {
case true :
doSomething();
break;
case 20 :
doSomethingElse();
break;
}
Оказывается, что doSomethingElse()
никогда не будет называться, потому что «дело истинно» будет поглощать все истинные случаи $ someVal.
Думайте, что это оправданно, возможно? Ну, попробуйте этот:
for($ix = 0; $ix < 10; $ix++) {
switch($ix) {
case 3 :
continue;
default :
echo ':';
}
echo $ix;
}
Угадайте, каков его выход? Должно быть: 0: 1: 2: 4: 5: 6: 7: 8: 9, правильно? Нет, это: 0: 1: 23: 4: 5: 6: 7: 8: 9. То есть, он игнорирует семантику оператора continue
и рассматривает его как break
.
Сообщество wiki это возможно? –