Библиотека собеса по PHP | вопросы с собеседований
3.38K subscribers
139 photos
2 videos
70 links
Вопросы с собеседований по PHP и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9f3affba

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Что такое traits?

Traits в PHP — это механизм, который позволяет повторно использовать код в классах без необходимости использования множественного наследования. Traits предоставляют решение для проблемы, когда несколько классов должны иметь одинаковый функционал, но наследование не является подходящим вариантом.

Также traits позволяют разделить функционал, что упрощает структуру кода и делает его более логичным и понятным.

Альтернативным решением для использования функционала traits может быть использование интерфейсов. Однако интерфейсы требуют реализации всех методов, которые определены в интерфейсе, в классе, в то время как трейты могут предоставлять реализацию функционала по умолчанию.

Оба варианта имеют свои преимущества, но трейты в PHP предоставляют большую гибкость при повторном использовании кода в разных классах.

Так как каждый класс может реализовать множество трейтов, могут возникать конфликты когда один и тот же метод реализован в разных трейтах и/или самом классе. Подробней о трейтах в документации.
Что делает функция create_function(), и почему её не стоит использовать?

​Функция create_function() в PHP позволяет динамически создавать анонимные функции из переданных строковых параметров, возвращая уникальное имя созданной функции. Однако начиная с версии PHP 7.2.0, эта функция была объявлена устаревшей, а в PHP 8.0.0 полностью удалена. ​


Почему не рекомендуется использовать create_function():

🔸 Проблемы безопасности: create_function() использует внутри себя функцию eval(), что может привести к выполнению произвольного кода, если входные данные не проверяются должным образом. Это открывает потенциальные уязвимости для внедрения вредоносного кода. ​

🔸 Низкая производительность и утечки памяти: Функции, созданные с помощью create_function(), являются глобальными и не могут быть освобождены, что может привести к повышенному потреблению памяти и снижению производительности. ​

🔸 Устаревание и удаление: Из-за вышеупомянутых проблем, начиная с PHP 7.2.0, функция create_function() была объявлена устаревшей, а в PHP 8.0.0 полностью удалена. Это означает, что её использование в современном коде приведёт к ошибкам. ​

Рекомендуемая альтернатива:

Вместо create_function() следует использовать анонимные функции или замыкания, которые были введены в PHP 5.3 и обеспечивают более безопасный и эффективный способ создания функций на лету. ​
Каковы основные компоненты Symfony и как они взаимодействуют друг с другом?

Symfony состоит из нескольких ключевых компонентов, которые взаимодействуют между собой, создавая надежный PHP-фреймворк. Компонент HttpFoundation заменяет глобальные переменные PHP объектно-ориентированным слоем, что позволяет проще работать с HTTP-запросами и ответами. Routing управляет генерацией и подбором URL, а EventDispatcher позволяет разделить код с помощью слушателей событий. DependencyInjection обеспечивает функциональность контейнера сервисов, способствуя многократному использованию и тестированию кода.

HttpKernel выступает в качестве ядра, используя другие компоненты для обработки запросов и генерации ответов. Он использует EventDispatcher для отправки нескольких событий во время обработки запроса, что позволяет внедрять пользовательское поведение в различных точках. Например, он отправляет событие 'kernel.request', которое может быть использовано Routing для сопоставления запроса с маршрутом и определения контроллера.

Компонент Twig — это шаблонизатор Symfony, взаимодействующий с HttpKernel для рендеринга представлений. Doctrine ORM взаимодействует с базой данных, обеспечивая персистентность данных.

Security обеспечивает аутентификацию и авторизацию, тесно взаимодействуя с HttpKernel и EventDispatcher. Translation помогает в интернационализации, а Validator обеспечивает соблюдение правил проверки объектов.
Что такое фильтр Блума?

Фильтр Блума — это вероятностная структура данных, которая используется для тестирования принадлежности элемента множеству. Он может давать ложные положительные результаты, но никогда не дает ложных отрицательных. Это значит, что если фильтр Блума говорит, что элемент принадлежит множеству, это может быть не так (ложное срабатывание), но если фильтр говорит, что элемент не принадлежит множеству, это точно так.

Подробнее в статье
Как использовать «PHPUnit» для написания модульных тестов для PHP-приложений, и каковы лучшие практики для этого?

PHPUnit — это широко используемый фреймворк для написания модульных тестов в PHP. Он позволяет разработчикам писать тестовые примеры, чтобы убедиться, что отдельные части кода работают так, как ожидается.

Для запуска тестов можно использовать команду phpunit. Лучшие практики модульного тестирования включают в себя написание независимых, повторяемых и легко поддерживаемых тестов, использование фикстур для создания тестовых данных, а также тестирование как положительных, так и отрицательных случаев.
💬 Хочешь прокачать навыки архитектуры на PHP за один вечер?
❗️Даже опытные PHP-разработчики сталкиваются с выбором: богатая или анемичная модель? CQRS или Event Sourcing? REST API или что-то сложнее?

📌 Разложим всё по полочкам на бесплатном авторском вебинаре Дмитрия Кириллова:

- узнаете, как упростить разработку с помощью грамотно выстроенной архитектуры
- научитесь осознанно выбирать инструмент под задачу
- посмотрите на полезные практические приёмы

Превратите архитектуру в своё конкурентное преимущество. Освойте подходы, которые реально работают в "бою" — и стань увереннее в любом проекте, от MVP до highload.

Регистрируйтесь прямо сейчас: https://clc.to/kFyT7Q

Приходите на открытый урок 8 апреля в 20:00 мск. Участники получат скидку на курс «PHP Developer. Professional».

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, Erid 2Vtzqvk4sBv
Please open Telegram to view this post
VIEW IN TELEGRAM