Как передаются переменные (по значению или по ссылке)?
В PHP переменные могут передаваться как по значению, так и по ссылке.
По умолчанию, в PHP переменные передаются по значению. Это означает, что когда переменная передается в функцию или присваивается другой переменной, создается ее копия, и любые изменения, сделанные внутри функции или на другой переменной, не влияют на оригинальную переменную.
Однако, PHP также предоставляет возможность передавать переменные по ссылке, используя символ '&' перед переменной при ее передаче в функцию или присваивании другой переменной. Когда переменная передается по ссылке, функция или другая переменная работают с тем же экземпляром переменной, и изменения внутри функции или на другой переменной отражаются на оригинальной переменной.
#вопросы_с_собеседований
В PHP переменные могут передаваться как по значению, так и по ссылке.
По умолчанию, в PHP переменные передаются по значению. Это означает, что когда переменная передается в функцию или присваивается другой переменной, создается ее копия, и любые изменения, сделанные внутри функции или на другой переменной, не влияют на оригинальную переменную.
Однако, PHP также предоставляет возможность передавать переменные по ссылке, используя символ '&' перед переменной при ее передаче в функцию или присваивании другой переменной. Когда переменная передается по ссылке, функция или другая переменная работают с тем же экземпляром переменной, и изменения внутри функции или на другой переменной отражаются на оригинальной переменной.
#вопросы_с_собеседований
👍13🥱3
Xdebug, работающий с Docker и PHP 8.4, за одну минуту
Настройка Xdebug может показаться сложной, но на самом деле её можно выполнить быстро, особенно если использовать Docker. В этой статье показано, как за несколько минут настроить Xdebug в проекте на Laravel с использованием PHP 8.4 и Xdebug 3.4.0.
Настройка Xdebug может показаться сложной, но на самом деле её можно выполнить быстро, особенно если использовать Docker. В этой статье показано, как за несколько минут настроить Xdebug в проекте на Laravel с использованием PHP 8.4 и Xdebug 3.4.0.
Laravel News
Get Xdebug Working With Docker and PHP 8.4 in One Minute - Laravel News
Xdebug has a history of being complex to get going, but I am here to show you how to use it in under a minute with Docker in a Laravel project.
👍4❤2
💬 Пишите ли вы тесты на свой код?
❤️ — всегда пишу тесты, которые покрывают важные места
👍 — иногда пишу, зависит от проекта
🥱 — еще не разбирался с тестами
❤️ — всегда пишу тесты, которые покрывают важные места
👍 — иногда пишу, зависит от проекта
🥱 — еще не разбирался с тестами
👍84🥱60❤40🎉3👾2
🙇♂️ Отобрать одного разраба на стек PHP + Vanilla JS после нескольких десятков созвонов-собеседований — вот они, современные реалии.
Почему выпускники курсов присылают резюме пачками, но выхлоп от обучения собственных юристов компании оказывается выше, чем от собеседований по вакансии?
— рассказывает Виталий Квитковский, руководитель отдела разработки и DevOps.
Под катом вас ждет:
☑️ Кратко о структуре собеседования.
☑️ Разбор задач.
☑️ Чего обычно не хватает джунам и как это добрать?
☑️ Что такое базовое программирование?
☑️ Как этому научиться?
👉 Читать
Почему выпускники курсов присылают резюме пачками, но выхлоп от обучения собственных юристов компании оказывается выше, чем от собеседований по вакансии?
— рассказывает Виталий Квитковский, руководитель отдела разработки и DevOps.
Под катом вас ждет:
☑️ Кратко о структуре собеседования.
☑️ Разбор задач.
☑️ Чего обычно не хватает джунам и как это добрать?
☑️ Что такое базовое программирование?
☑️ Как этому научиться?
👉 Читать
👍5😁2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
❤2👍1😁1👾1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🍎 Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
✌️🆚⚛️ Vite vs Create React App: почему разработчики массово переходят на новый инструмент
⚛️ 8 важнейших аспектов JavaScript, которые нужно освоить до изучения React
🔀 Команды git merge и git rebase: преимущества, недостатки и ключевые различия
👾🔍 Укрощение монстров: мониторинг и управление ресурсоемкими запросами в Django + PostgreSQL
🚀 Как ускорить распределенные системы: 8 стратегий снижения времени ожидания
🧪 Успешное тестирование: основы и передовые приемы Jest. Часть 1
👨💻🚀 Тест: насколько ты продвинутый разраб?
✌️🆚⚛️ Vite vs Create React App: почему разработчики массово переходят на новый инструмент
⚛️ 8 важнейших аспектов JavaScript, которые нужно освоить до изучения React
🔀 Команды git merge и git rebase: преимущества, недостатки и ключевые различия
👾🔍 Укрощение монстров: мониторинг и управление ресурсоемкими запросами в Django + PostgreSQL
🚀 Как ускорить распределенные системы: 8 стратегий снижения времени ожидания
🧪 Успешное тестирование: основы и передовые приемы Jest. Часть 1
👨💻🚀 Тест: насколько ты продвинутый разраб?
👍1
Оптимизированная ленивая загрузка в Symfony Doctrine для повышения производительности
Во время работы над проектом Symfony возникла проблема с производительностью из-за неожиданного поведения Doctrine. В одной из сущностей была настроена связь OneToOne с параметром
Проблема
Пример: сущность
Усложнённые запросы: ненужные операции JOIN увеличивали нагрузку на базу данных.
Избыточное использование памяти: данные загружались в память даже при их ненужности.
Замедление работы API: запросы, возвращающие списки магазинов, замедлялись из-за лишних данных.
Решение
1. Перепроектирование связи
Связь была преобразована из OneToOne в ManyToOne. Теперь
2. Обновление схемы базы данных
С помощью Doctrine Migrations была изменена структура базы данных: старый внешний ключ для связи OneToOne был удалён, и добавлен ключ для ManyToOne.
3. Корректировка запросов
Теперь детали магазина загружаются только по необходимости
4. Профилирование
С помощью инструментов Symfony была подтверждена оптимизация. Теперь связанные сущности не загружаются без явного запроса.
Результаты
🟢Скорость выполнения запросов: уменьшилась в среднем на 35%.
🟢Использование памяти: значительно сократилось, так как избыточные данные больше не загружаются.
🟢Время ответа API: улучшилось на 20–30% для запросов с большими объёмами данных.
👉Ссылка на Medium
Во время работы над проектом Symfony возникла проблема с производительностью из-за неожиданного поведения Doctrine. В одной из сущностей была настроена связь OneToOne с параметром
fetch="LAZY»
, чтобы загружать связанные данные только при необходимости. Однако Doctrine загружал связанные сущности заранее, что приводило к избыточной нагрузке.Проблема
Пример: сущность
Store
имела связь OneToOne с сущностью StoreDetail
, содержащей метаданные о магазине. Даже при включённой ленивой загрузке Doctrine автоматически добавлял JOIN, что влияло на производительность:Усложнённые запросы: ненужные операции JOIN увеличивали нагрузку на базу данных.
Избыточное использование памяти: данные загружались в память даже при их ненужности.
Замедление работы API: запросы, возвращающие списки магазинов, замедлялись из-за лишних данных.
Решение
1. Перепроектирование связи
Связь была преобразована из OneToOne в ManyToOne. Теперь
StoreDetail
ссылался на Store
, что позволило Doctrine корректно применять ленивую загрузку.2. Обновление схемы базы данных
С помощью Doctrine Migrations была изменена структура базы данных: старый внешний ключ для связи OneToOne был удалён, и добавлен ключ для ManyToOne.
3. Корректировка запросов
Теперь детали магазина загружаются только по необходимости
4. Профилирование
С помощью инструментов Symfony была подтверждена оптимизация. Теперь связанные сущности не загружаются без явного запроса.
Результаты
🟢Скорость выполнения запросов: уменьшилась в среднем на 35%.
🟢Использование памяти: значительно сократилось, так как избыточные данные больше не загружаются.
🟢Время ответа API: улучшилось на 20–30% для запросов с большими объёмами данных.
👉Ссылка на Medium
🥱10👍3🤔3❤1
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
ResultTransformer в Symfony проектах
Symfony со стандартным набором возможностей представляет собой мощное и универсальное решение, способное справляться с широким спектром бизнес-задач. Существует подход, который известен далеко не каждому разработчику на Symfony, а если и известен, то чаще всего поверхностно и редко применяется на практике. Настало время подробнее рассмотреть эту менее известную, но интересную сторону фреймворка.
Один из таких подходов связан с использованием функциональности Doctrine, позволяющей возвращать готовые DTO, что избавляет разработчика от ручной работы по преобразованию данных. Этот процесс, известный как ResultTransformer, автоматизирует преобразование данных в DTO, значительно упрощая задачу программиста.
Однако, стоит учитывать, что этот метод имеет ряд ограничений. Он может оказаться избыточным и подходит далеко не для всех случаев. Применение подхода целесообразно лишь в определённых сценариях, где его преимущества действительно оправданы.
Symfony со стандартным набором возможностей представляет собой мощное и универсальное решение, способное справляться с широким спектром бизнес-задач. Существует подход, который известен далеко не каждому разработчику на Symfony, а если и известен, то чаще всего поверхностно и редко применяется на практике. Настало время подробнее рассмотреть эту менее известную, но интересную сторону фреймворка.
Один из таких подходов связан с использованием функциональности Doctrine, позволяющей возвращать готовые DTO, что избавляет разработчика от ручной работы по преобразованию данных. Этот процесс, известный как ResultTransformer, автоматизирует преобразование данных в DTO, значительно упрощая задачу программиста.
Однако, стоит учитывать, что этот метод имеет ряд ограничений. Он может оказаться избыточным и подходит далеко не для всех случаев. Применение подхода целесообразно лишь в определённых сценариях, где его преимущества действительно оправданы.
Хабр
ResultTransformer в Symfony проектах
Symfony со стандартным набором «батареек» представляет из себя монструозное решение, способное реализовать если и не любые, то очень многие задачи бизнеса. Поделюсь подходом, о котором...
👍4
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
[Git] Зачем команда git bundle?
Команда
Основные случаи использования git bundle:
1. Передача репозитория офлайн:
Если репозиторий большой, но доступ к сети отсутствует, можно создать файл с полным содержимым репозитория и передать его через USB-накопитель или другое физическое устройство.
2.Обновление репозитория офлайн:
Если нужно синхронизировать изменения между двумя репозиториями без доступа к сети, можно упаковать изменения в bundle и передать его.
3. Создание резервной копии:
4. Доставка изменений:
Это удобный способ передать патчи или ветки, которые можно позже интегрировать в другой репозиторий.
Примеры использования:
Создание полного архива репозитория:
Здесь флаг
Упаковка определённой ветки:
Это создаст архив с содержимым только ветки main.
Проверка содержимого bundle:
Проверяет, что файл корректен и пригоден для использования.
Клонирование из bundle:
Команда
git bundle
используется для упаковки репозитория или его части в один файл. Этот файл можно передать, скопировать или сохранить, а затем использовать для восстановления или обновления репозитория в другом месте. Основное назначение этой команды — перенос изменений без необходимости наличия сетевого подключения, например, в случаях, когда доступ к удалённому репозиторию ограничен.Основные случаи использования git bundle:
1. Передача репозитория офлайн:
Если репозиторий большой, но доступ к сети отсутствует, можно создать файл с полным содержимым репозитория и передать его через USB-накопитель или другое физическое устройство.
2.Обновление репозитория офлайн:
Если нужно синхронизировать изменения между двумя репозиториями без доступа к сети, можно упаковать изменения в bundle и передать его.
3. Создание резервной копии:
git bundle
может использоваться для создания архива репозитория с сохранением всей истории.4. Доставка изменений:
Это удобный способ передать патчи или ветки, которые можно позже интегрировать в другой репозиторий.
Примеры использования:
Создание полного архива репозитория:
git bundle create my-repo.bundle --all
Здесь флаг
--all
указывает, что нужно упаковать все ветки и историю.Упаковка определённой ветки:
git bundle create my-feature.bundle main
Это создаст архив с содержимым только ветки main.
Проверка содержимого bundle:
git bundle verify my-repo.bundle
Проверяет, что файл корректен и пригоден для использования.
Клонирование из bundle:
git clone my-repo.bundle my-new-repo
❤14🔥7👍4
Написание высококачественных тестов
В статье обсуждается важность написания качественных тестов и подчеркивается, что их часто недооценивают. Автор отмечает, что разработчики нередко просто проверяют наличие тестов, вместо того чтобы уделять внимание их качеству. Это может приводить к проблемам: тесты оказываются ненадежными, сложными для понимания или слишком долгими в выполнении.
Минимализм в тестах
Рекомендуется писать тесты минимального размера, содержащие только необходимый код. Это упрощает их понимание в будущем. Тест должен быть максимально лаконичным, но при этом полностью завершённым.
Стремление к 100% покрытию кода
Автор критикует подход, при котором допускается, например, 90% покрытие, так как это создает иллюзию надежности. Вместо этого предлагается избегать ненужного кода (например, геттеров и сеттеров, которые не используются) и исключать из анализа строки, которые невозможно покрыть тестами.
Написание качественных проверок (assertions)
Тесты пишутся для проверки поведения кода, и правильная формулировка проверок имеет решающее значение. Подчеркивается важность понятных сообщений об ошибках, которые помогают быстро разобраться в проблеме. Он критикует использование слишком общих проверок, которые затрудняют диагностику, и рекомендует выбирать подходящие инструменты, такие как специализированные проверки в PHPUnit.
Снапшот-тестирование
Автор также обсуждает методику снапшот-тестирования, которая часто используется в фронтенд-разработке. Она фиксирует текущее состояние компонентов и позволяет быстро выявить изменения. Однако метод имеет недостатки, такие как хрупкость тестов и неочевидность их намерений.
Рекомендации
Для улучшения тестирования автор советует:
🔸Упрощать код тестов, оставляя только необходимое.
🔸Стремиться к 100% покрытию кода, исключая из анализа непокрываемые участки.
🔸Использовать правильные проверки, которые дают понятные сообщения об ошибках.
В статье обсуждается важность написания качественных тестов и подчеркивается, что их часто недооценивают. Автор отмечает, что разработчики нередко просто проверяют наличие тестов, вместо того чтобы уделять внимание их качеству. Это может приводить к проблемам: тесты оказываются ненадежными, сложными для понимания или слишком долгими в выполнении.
Минимализм в тестах
Рекомендуется писать тесты минимального размера, содержащие только необходимый код. Это упрощает их понимание в будущем. Тест должен быть максимально лаконичным, но при этом полностью завершённым.
Стремление к 100% покрытию кода
Автор критикует подход, при котором допускается, например, 90% покрытие, так как это создает иллюзию надежности. Вместо этого предлагается избегать ненужного кода (например, геттеров и сеттеров, которые не используются) и исключать из анализа строки, которые невозможно покрыть тестами.
Написание качественных проверок (assertions)
Тесты пишутся для проверки поведения кода, и правильная формулировка проверок имеет решающее значение. Подчеркивается важность понятных сообщений об ошибках, которые помогают быстро разобраться в проблеме. Он критикует использование слишком общих проверок, которые затрудняют диагностику, и рекомендует выбирать подходящие инструменты, такие как специализированные проверки в PHPUnit.
Снапшот-тестирование
Автор также обсуждает методику снапшот-тестирования, которая часто используется в фронтенд-разработке. Она фиксирует текущее состояние компонентов и позволяет быстро выявить изменения. Однако метод имеет недостатки, такие как хрупкость тестов и неочевидность их намерений.
Рекомендации
Для улучшения тестирования автор советует:
🔸Упрощать код тестов, оставляя только необходимое.
🔸Стремиться к 100% покрытию кода, исключая из анализа непокрываемые участки.
🔸Использовать правильные проверки, которые дают понятные сообщения об ошибках.
🤩1
«Я создал одно и то же приложение на всех версиях PHP (1995-2025)»
Здесь автор создает приложение на PHP 2 и постепенно улучшает его, параллельно рассказывая о нововведениях каждой вышедшей версии языка. Интересное видео на вечер
Здесь автор создает приложение на PHP 2 и постепенно улучшает его, параллельно рассказывая о нововведениях каждой вышедшей версии языка. Интересное видео на вечер
👍12🔥2👏1😁1
Использование технологии withoutWrapping для сглаживания ответов API
Ресурсы API Laravel по умолчанию оборачивают ответы в ключ 'data'. Хоть это и полезно для многих сценариев, иногда требуется более плоская структура ответа, и тогда вы можете отключить обертывание ресурсов.
Ресурсы API Laravel по умолчанию оборачивают ответы в ключ 'data'. Хоть это и полезно для многих сценариев, иногда требуется более плоская структура ответа, и тогда вы можете отключить обертывание ресурсов.
👍8❤2👾1
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #PHPdevjob
Вакансии PHP разработчиков уровня Junior
▪️ Junior Backend разработчик РНР (Laravel)
Удалёнка, Делаем IT
Подробнее
▪️ PHP-разработчик Junior / Middle
Офис (Санкт-Петербург), Off Group
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️ PHP-разработчик
Офис (Екатеринбург), Goulash.Tech
Подробнее
▪️ Middle Backend Developer (PHP)
Удалёнка / Офис (Москва), Rusprofile
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️ Senior PHP разработчик
Офис (Томск), Совкомбанк Технологии
Подробнее
▪️ PHP-разработчик (Laravel)
Удалёнка, Рососмотр
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️ Junior Backend разработчик РНР (Laravel)
Удалёнка, Делаем IT
Подробнее
▪️ PHP-разработчик Junior / Middle
Офис (Санкт-Петербург), Off Group
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️ PHP-разработчик
Офис (Екатеринбург), Goulash.Tech
Подробнее
▪️ Middle Backend Developer (PHP)
Удалёнка / Офис (Москва), Rusprofile
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️ Senior PHP разработчик
Офис (Томск), Совкомбанк Технологии
Подробнее
▪️ PHP-разработчик (Laravel)
Удалёнка, Рососмотр
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
hh.ru
Вакансия Junior Backend разработчик РНР (Laravel) в Москве, работа в компании Делаем IT (вакансия в архиве c 12 января 2025)
Зарплата: не указана. Москва. Требуемый опыт: 1–3 года. Полная. Дата публикации: 10.01.2025.
😁3👍1
💭 Представьте, что за час вы можете научиться чему угодно. Что вы выберете?👇
👏1
Обновление Symfony 2.8 до версии 7.2 по проторенной дорожке
Обновление проектов на Symfony можно проводить двумя способами. Первый подразумевает использование только UPGRADE.md файлов при каждом релизе, заменяя устаревшие функции новыми. Такой подход позволяет поддерживать проект в актуальном состоянии, но его возможности ограничены. Второй подход более комплексный: он не только учитывает изменения, но и использует все современные функции фреймворка. Это делает код быстрее, проще в понимании и готовым к следующим обновлениям. Второй способ предпочтителен, так как повышает удобство работы с проектом и его дальнейшую поддержку.
Основные этапы обновления Symfony
1. Учет версий PHP и Symfony
Перед обновлением важно проверить совместимость версий Symfony и PHP. Например, Symfony 5.4 — последняя версия, поддерживающая PHP 7.4. Если проект работает на этой версии PHP, необходимо сначала обновить Symfony до 5.4, а затем перейти на PHP 8.0, чтобы продолжить обновление до Symfony 6.
2. Обновления в Symfony 3
🔸Новая структура каталогов. Вместо папок
🔸Инъекция зависимостей через конструктор. Переход от использования глобального контейнера (
🔸Автозагрузка и автоконфигурация сервисов. С помощью
🔸Разделение монорепозитория. Вместо зависимости
3. Нововведения Symfony 4
🟢PSR-4 автозагрузка сервисов. Можно автоматически регистрировать все классы из определенной директории, вместо ручной регистрации каждого сервиса.
🟢Переход с YAML на PHP для конфигураций. PHP-конфиги более удобны для работы с инструментами статического анализа и проверки на устаревшие методы.
4. Symfony 5 и новые атрибуты
От аннотаций к атрибутам. С версии 5.2 поддерживаются PHP-атрибуты, такие как
Новая система аутентификации. Вместо Guard используется более современный механизм, представленный в Symfony 5.3.
5. Symfony 6 и 7
На версиях Symfony 6 и 7 акцент сделан на улучшение синтаксиса и использование новых возможностей PHP 8. Например:
Обновление проектов на Symfony можно проводить двумя способами. Первый подразумевает использование только UPGRADE.md файлов при каждом релизе, заменяя устаревшие функции новыми. Такой подход позволяет поддерживать проект в актуальном состоянии, но его возможности ограничены. Второй подход более комплексный: он не только учитывает изменения, но и использует все современные функции фреймворка. Это делает код быстрее, проще в понимании и готовым к следующим обновлениям. Второй способ предпочтителен, так как повышает удобство работы с проектом и его дальнейшую поддержку.
Основные этапы обновления Symfony
1. Учет версий PHP и Symfony
Перед обновлением важно проверить совместимость версий Symfony и PHP. Например, Symfony 5.4 — последняя версия, поддерживающая PHP 7.4. Если проект работает на этой версии PHP, необходимо сначала обновить Symfony до 5.4, а затем перейти на PHP 8.0, чтобы продолжить обновление до Symfony 6.
2. Обновления в Symfony 3
🔸Новая структура каталогов. Вместо папок
/app
и /Resources
все файлы теперь располагаются в корне проекта.🔸Инъекция зависимостей через конструктор. Переход от использования глобального контейнера (
$this->get('service')
) к внедрению зависимостей в конструкторе. Этот шаг значительно упрощает архитектуру.🔸Автозагрузка и автоконфигурация сервисов. С помощью
_defaults: autowire: true
можно сократить настройки в services.yml
.🔸Разделение монорепозитория. Вместо зависимости
symfony/symfony
рекомендуется добавлять в проект только те пакеты Symfony, которые действительно используются.3. Нововведения Symfony 4
🟢PSR-4 автозагрузка сервисов. Можно автоматически регистрировать все классы из определенной директории, вместо ручной регистрации каждого сервиса.
🟢Переход с YAML на PHP для конфигураций. PHP-конфиги более удобны для работы с инструментами статического анализа и проверки на устаревшие методы.
4. Symfony 5 и новые атрибуты
От аннотаций к атрибутам. С версии 5.2 поддерживаются PHP-атрибуты, такие как
#[Route]
и #[Required]
, что упрощает написание и понимание кода.Новая система аутентификации. Вместо Guard используется более современный механизм, представленный в Symfony 5.3.
5. Symfony 6 и 7
На версиях Symfony 6 и 7 акцент сделан на улучшение синтаксиса и использование новых возможностей PHP 8. Например:
#[TaggedIterator]
позволяет автоматически внедрять набор сервисов.#[Autowire]
упрощает передачу переменных окружения в сервисы.👍3🔥3❤1