Полагаю тут причина в том, что в контексте использования они не пересекаются (т.е. точно можно определить что имеется ввиду). С разделителем неймспейсов немного другая ситуация. Например, если бы выбрали символ "::", то возникли бы неоднозначности.
echo SomeObj::somefunc();
что тут имеется ввиду — функция неймспейса или статическая функция класса? Конечно можно было бы определить приоритеты, но интерпретатору приходилось бы тратить время на анализ и проверку всех возможных ситуаций
Что-то пока не очень много нововведений по сравнению с 5.3 (не считая traits и пресловутого array dereferencing). У 5.3 по сравнению с 5.2 куда больше было фич (неймспейсы, анонимные функции и т.д.). Будем надеяться ещё добавят разных вкусностей. Лишь бы не испортили хорошие идеи, как это, к сожалению, иногда бывает
Когда недостаточно информации — невозможно придумать оптимальное решение. Я исхожу из того, что есть и придерживаюсь правила «не усложняй без необходимости». Когда появятся дополнительные условия — решение можно будет пересмотреть
Про производительность в условии ничего не было сказано. Это уже, как говорится, другой вопрос :)
Как вариант — денормализация. Всё зависит от конкретных условий и требований
что тут имеется ввиду — функция неймспейса или статическая функция класса? Конечно можно было бы определить приоритеты, но интерпретатору приходилось бы тратить время на анализ и проверку всех возможных ситуаций
Вы это имели ввиду под «повсеместным уникодом» или я что-то не увидел?
Надеюсь просто break 2 и continue 2 оставили. Фича редкоиспользуемая, но пару раз очень нужной оказалась
some_func($obj)
?Как вариант — денормализация. Всё зависит от конкретных условий и требований
— кеширование;
— денормализация базы;
— NoSQL;