Есть готовые решение с «сахаром» для старых версий PHP?
Ищу что-то вроде полифил(polyfill) функций, но только для языковых конструкций.
Примерный принцип работы: загрузчик классов проверяет версию PHP и если все яз.конструкции поддерживаются, то загружает непосредственно файл класса, иначе создается/загружается сгенерированный файл класса в котором неподдерживаемые конструкции заменены на их аналоги, например, '$foo ?: $bar' замено на '$foo ? $foo : $bar' и т.д.
Антон Шаманов, polyfil имеет смысл юзать, когда у вас приложение запускается на множестве разных окружений, для js в куче версий браузеров в этом есть смысл. PHP запускается на конкретных ваших серверах, поддерживать множество разных окружений - может быть очень дорогой штукой, а вот с профитам под большим вопросом.
Написано
Антон Шаманов
@SilenceOfWinter Автор вопроса, куратор тега PHP
index0h, откуда взялось "на конкретных ваших серверах")
Вообще в чем смысл этого? Никто не будет заниматся таким мазахизмом, когда можно просто обновиться хотя бы до поддерживаемой версии (7.2), вместо того, что бы придумывать какие-то компиляторы сахара.
Обновляйтесь до новой версии или забудьте об использовании кода с новых версий.
Написано
Антон Шаманов
@SilenceOfWinter Автор вопроса, куратор тега PHP
Что за дурацкая привычка лезть что-то доказывать когда об этом никто не просил. Спрашиваю, значит нужно именно это или ты думаешь что твое "обновись" это откровение какое-то? Посмотри статистику использования версий PHP в % соотношении перед тем как спорить.
Тайп хинтинг каким сахаром заменять собрался?
Например заменой на
if (! is_string($val)) {
throw new Error();
}
К слову, тайп хинтинг делался еще 10 лет назад через обработек ошибок.
Анонимные классы? Генераторы?
речь о переписывании 7ки на 5ке не идет. анонимные классы не так часто используются.
Антон Шаманов, очень маловероятно, что кто-то напишет и будет поддерживать такой инструмент, потому и пытаются убедить в отказе от такого решения.
Написано
Антон Шаманов
@SilenceOfWinter Автор вопроса, куратор тега PHP
Сергей Семенко, "очень маловероятно, что кто-то напишет и будет поддерживать такой инструмент" это еще почему? reflection + tokenizer)) если посмотреть проекты из ответа Кирилл Несмеянов , то можно убедиться что и более сложные задачи решаемы.
Антон Шаманов
@SilenceOfWinter Автор вопроса, куратор тега PHP
пасиб, но это не совсем то что нужно - т.к. все они вводят свой доп.синтаксис, а не стандартный подменяют. тот же '$foo ?: $bar' ни одна из них не реализует.
там по сути из нововведений всего '?:', '??', '??=', '<=>', [] вместо list и '...$var'.
Антон Шаманов, P.S. а, всё, туплю. Нужно наоборот синтаксис опускать. Ну если наоборот, то только yay и preprocess, который на его основе. Допилить туда свои правила - дело 10 минут.
Написано
Антон Шаманов
@SilenceOfWinter Автор вопроса, куратор тега PHP
не хотелось бы вводить доп.зависимости от зависимостей
пока дело несрочное подожду ответа тут - не хочу лишний раз изобретать велосипед, а так всегда можно распарсить с помощью token_get_all/php_check_syntax