Разработчики PHP активно избавляются от того, что считают устаревшим. И если эти функции даже кандидатами в deprecated не являются, значит они реально нужны - независимо от мнения участников "тостера".
Времена PHP 5.3 прошли много лет назад. А с версии 5.4 никакой обязательной передачи по ссылке уже нет.
P.S. PHP - мультипарадигменный язык, который не обязывает использовать классы и автозагрузку.
FanatPHP, Вызвать функцию по имени в переменной можно было и задолго до 7-й версии. И через рефлексию это тоже можно прекрасно сделать. Однако, никто из разработчиков PHP почему-то не спешит объявлять call_user_func и call_user_func_array устаревшими - в отличие от выброшенной из 8-й версии create_function.
Александр Торопов, Сам по себе Python не умеет ничего, что не умел бы PHP. При этом интерпретатор Python медленнее интерпретатора PHP.
До недавнего времени достоинством Python была возможность подключения библиотек, написанных на C/C++: всю работу делают эти библиотеки, а Python используется только как интерфейсная прокладка между креслом и библиотеками.
Но с версии 7.4 в PHP тоже появилась возможность подключать библиотеки. Так что сейчас Python не имеет никаких преимуществ.
maxcad, Тоже не люблю видеоуроки. Но Дмитрия Елисеева стоит и читать, и смотреть: хорошо прочищает мозги PHP-разработчиков. А текстовых материалов, объясняющих на таком уровне всю тему устройства фреймворков, я не встречал. Отдельные компоненты - да. Но не в комплексе.
Так автозагрузка и контейнер DI - это и есть способы избавится от include. Когда без include автоматически загружается ровно то, что нужно. Когда контейнер внедрения зависимостей сам подтягивает параметры из конфигурации и подставляет их в создаваемый объект...
Объекты не создаются в коде с помощью new. Вместо этого производится запрос к контейнеру внедрения зависимостей с именем класса создаваемого объекта. И уже внутри контейнера создаётся (вот здесь - через new) требуемый объект (или отдаётся уже существующий, если это не первый запрос объекта этого класса), создаются объекты, от которых запрашиваемый объект зависит, создаваемым объектам передаются параметры конфигурации... И всё это делается автоматически.
И создаваемые объекты вообще ничего не знают о том, откуда конфигурация берётся.
Лентюй, Хотите быть в курсе - посмотрите видеоуроки, которые я советую в ответе. Там очень хорошо объясняется, как устроены современные фреймворки и почему они устроены именно так.
Лентюй, Вопрос был "как избежать инклюдов?". И единственный правильный ответ на него: не использовать include сверх минимально необходимых двух-трёх include на весь код сайта. А автозагрузка, DI и прочее - это объяснение того, как именно их не использовать.
И если вам не нравятся ответы, данные на этот вопрос, то почему вы не написали свой ответ?
Genri_Rus, Тут как раз отсутствие интерполяции - прямая подстановка значения переменной. Точно так же, как это было бы написано в PHP-коде (только там было бы $value и '.' вместо '~').
Лентюй, Не вижу в исходном вопросе ничего вами перечисленного. Наоборот, текст вопроса свидетельствует о том, что его автор ничего об автозагрузке не знает.
Лентюй, Но этот include находится в единственном месте кода сайта и срабатывает только в том случае, если идет запрос к ещё не загруженному сайту. Вместо явно прописываемого во множестве файлов геморроя (а не забыли ли мы что-то и не подключили ли что-то лишнее? а в каких ещё местах надо поменять include при изменении кода?) управление загрузкой передаётся самому PHP.
Фактически, программисту остаётся только задать, откуда грузить. Но даже этого не требуется, если используется Composer, автоматически создающий автозагрузчик.
Если честно, то я просто набрал в Google: twig конкатенация строк и получил множество рецептов, сводящихся к тому, что операция конкатенации: ~
Насколько понимаю, {{ ... }} - это вывод значения переменной (аналог <?= ... ?> в PHP). Но как это работает внутри {% ... %}, непонятно. Так что правилен вариант без {{...}}.
Так ведь запрос внутри ANY должен возвращать единственный столбец - значения которого будут использованы в условном выражении. И работает это совсем не так: www.mysql.ru/docs/gruber/mg13.html
А from Pass_in_trip, Passenger без связи в where между Pass_in_trip и Passenger вернёт декартово произведение таблиц, продублировав каждую строку Passenger столько раз, сколько строк в Pass_in_trip.
Времена PHP 5.3 прошли много лет назад. А с версии 5.4 никакой обязательной передачи по ссылке уже нет.
P.S. PHP - мультипарадигменный язык, который не обязывает использовать классы и автозагрузку.