#Собес #interface #abstraction #contract
🤔 Какова цель использования интерфейсов в PHP?
💬 Кратко:
Интерфейсы в PHP используются для создания контракта, который требует от классов реализации определённых методов, без определения того, как именно эти методы должны быть реализованы. Это помогает соблюдать принцип абстракции, улучшает организацию кода и упрощает взаимодействие между различными частями приложения. Интерфейсы также способствуют лучшей поддерживаемости и расширяемости кода.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Какова цель использования интерфейсов в PHP?
💬 Кратко:
Интерфейсы в PHP используются для создания контракта, который требует от классов реализации определённых методов, без определения того, как именно эти методы должны быть реализованы. Это помогает соблюдать принцип абстракции, улучшает организацию кода и упрощает взаимодействие между различными частями приложения. Интерфейсы также способствуют лучшей поддерживаемости и расширяемости кода.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1🔥1
mlocati/php-extension-installer
Полезная утилита, которая решает вечную боль сборки PHP-образов.
Позволяет ставить расширения одной строчкой, без
Работает с Alpine и с Debian.
Сам подтягивает системные зависимости, поддерживает PECL-пакеты и умеет кэшировать слои.
По сути — "composer install" для PHP-расширений.
https://github.com/mlocati/docker-php-extension-installer
Сравни, как было бы без него:
🚀 Пост Guru PHP: @msavin_dev
Полезная утилита, которая решает вечную боль сборки PHP-образов.
Позволяет ставить расширения одной строчкой, без
apt, apk и docker-php-ext-install.
FROM php:8.3-fpm
# Подтягиваем готовый установщик расширений из образа mlocati
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
# Одной командой ставим всё нужное
RUN set -eux; \
install-php-extensions \
intl \
pdo_pgsql \
opcache \
gd \
redis \
xdebug
Работает с Alpine и с Debian.
Сам подтягивает системные зависимости, поддерживает PECL-пакеты и умеет кэшировать слои.
По сути — "composer install" для PHP-расширений.
https://github.com/mlocati/docker-php-extension-installer
Сравни, как было бы без него:
FROM php:8.3-fpm
# Системные зависимости для intl, pdo_pgsql, gd
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
libicu-dev \
libpq-dev \
libjpeg-dev \
libpng-dev \
libwebp-dev \
libfreetype6-dev \
pkg-config \
git \
ca-certificates; \
rm -rf /var/lib/apt/lists/*
# Конфигурация и сборка расширений из исходников
RUN set -eux; \
docker-php-ext-install -j"$(nproc)" \
gd \
intl \
pdo_pgsql \
opcache
# PECL-расширения
RUN set -eux; \
pecl install redis; \
pecl install xdebug; \
docker-php-ext-enable redis xdebug
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - mlocati/docker-php-extension-installer: Easily install PHP extensions in Docker containers
Easily install PHP extensions in Docker containers - mlocati/docker-php-extension-installer
❤1👍1🔥1
#Собес #route #web #api
🤔 Какие файлы маршрутов по умолчанию существуют в Laravel?
💬 Кратко:
В Laravel по умолчанию существуют четыре файла маршрутов:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Какие файлы маршрутов по умолчанию существуют в Laravel?
💬 Кратко:
В Laravel по умолчанию существуют четыре файла маршрутов:
web.php для веб-маршрутов, api.php для API-маршрутов, console.php для команд консоли и channel.php для каналов вещания событий.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#book #памятка
📚 Памятка PHP/GoLang разработчику для подготовки к собеседованиям
Это методичка(краткий справочник) по темам, знание которых может понадобиться при собеседовании на бэкендера (с уклоном в Golang/PHP) и на работе.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Памятка PHP/GoLang разработчику для подготовки к собеседованиям
Это методичка(краткий справочник) по темам, знание которых может понадобиться при собеседовании на бэкендера (с уклоном в Golang/PHP) и на работе.
Перейти к материалу
👉 База вопросов 👉 Новости
❤1
#Собес #phpunit #unit #test
🤔 Как написать юнит-тесты в PHP?
💬 Кратко:
В PHP юнит-тесты пишутся с использованием PHPUnit, который позволяет проверять корректность работы кода. Для создания тестов необходимо создать класс с методами, проверяющими функциональность программы, и использовать различные утверждения для проверки результатов. PHPUnit поддерживает создание фиктивных объектов и наборов данных для тестирования различных сценариев.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как написать юнит-тесты в PHP?
💬 Кратко:
В PHP юнит-тесты пишутся с использованием PHPUnit, который позволяет проверять корректность работы кода. Для создания тестов необходимо создать класс с методами, проверяющими функциональность программы, и использовать различные утверждения для проверки результатов. PHPUnit поддерживает создание фиктивных объектов и наборов данных для тестирования различных сценариев.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#Собес #transaction #deadlock #database
🤔 Как предотвратить взаимоблокировки в базе данных?
💬 Кратко:
Взаимоблокировки возникают, когда несколько транзакций блокируют друг друга, ожидая освобождения ресурсов. Чтобы их избежать, следует:
- Всегда обращаться к ресурсам базы данных в одном порядке.
- Сокращать время выполнения транзакций, чтобы уменьшить вероятность конфликта.
- Использовать таймауты для автоматического завершения зависших транзакций.
- Регулярно анализировать производительность базы данных и оптимизировать запросы, добавляя индексы и избегая сложных блокировок.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как предотвратить взаимоблокировки в базе данных?
💬 Кратко:
Взаимоблокировки возникают, когда несколько транзакций блокируют друг друга, ожидая освобождения ресурсов. Чтобы их избежать, следует:
- Всегда обращаться к ресурсам базы данных в одном порядке.
- Сокращать время выполнения транзакций, чтобы уменьшить вероятность конфликта.
- Использовать таймауты для автоматического завершения зависших транзакций.
- Регулярно анализировать производительность базы данных и оптимизировать запросы, добавляя индексы и избегая сложных блокировок.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
PHP-FPM status page
PHP-FPM может сам показать живую статистику по пулам и воркерам. Для этого нужно посетить страницу
Пример вывода:
Что это значит по-человечески:
* listen queue — сколько запросов ждут воркера.
* idle processes — свободные воркеры. Если всегда
* active processes — кто-то реально что-то делает.
* max children reached > 0 — пул упирался в лимит
* slow requests > 0 — смотри slowlog, код тормозит.
Как включить
В
В nginx добавь:
Перезапусти FPM и nginx, затем:
Можно и
А
📘 Документация: https://www.php.net/manual/en/fpm.status.php
🚀 Пост Guru PHP: @msavin_dev
PHP-FPM может сам показать живую статистику по пулам и воркерам. Для этого нужно посетить страницу
/fpm-statusПример вывода:
pool: www
process manager: dynamic
listen queue: 0
idle processes: 3
active processes: 2
max children reached: 0Что это значит по-человечески:
* listen queue — сколько запросов ждут воркера.
0 — отлично.* idle processes — свободные воркеры. Если всегда
0 — не хватает процессов.* active processes — кто-то реально что-то делает.
* max children reached > 0 — пул упирался в лимит
pm.max_children.* slow requests > 0 — смотри slowlog, код тормозит.
Как включить
В
www.conf (или другом пуле):pm.status_path = /fpm-status
ping.path = /ping
ping.response = pong
В nginx добавь:
location = /fpm-status {
include fastcgi_params;
fastcgi_pass unix:/run/php/php-fpm.sock;
allow 127.0.0.1; deny all;
}Перезапусти FPM и nginx, затем:
curl http://127.0.0.1/fpm-status
Можно и
?full — покажет все процессы с PID, временем работы и запросом. Также можно менять формат вывода статистикиА
/ping пригодится для health-check.📘 Документация: https://www.php.net/manual/en/fpm.status.php
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: Status Page - Manual
❤2🔥2
#Собес #transaction #pdo #mysql
🤔 Как выполнять транзакции в PHP с MySQL?
💬 Кратко:
Транзакции позволяют выполнять несколько запросов к базе данных как единое целое. Если один из запросов завершится неудачей, можно откатить изменения. В PHP транзакции реализуются через MySQLi или PDO, с использованием методов
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как выполнять транзакции в PHP с MySQL?
💬 Кратко:
Транзакции позволяют выполнять несколько запросов к базе данных как единое целое. Если один из запросов завершится неудачей, можно откатить изменения. В PHP транзакции реализуются через MySQLi или PDO, с использованием методов
beginTransaction, commit и rollBack.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍2
#Собес #ipsec #layer_3 #encryption
🤔 На каком уровне работает IPsec?
💬 Кратко:
IPsec работает на 3-м уровне модели OSI (сетевом уровне). Он обеспечивает защиту данных на уровне IP-пакетов с использованием методов шифрования и аутентификации.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 На каком уровне работает IPsec?
💬 Кратко:
IPsec работает на 3-м уровне модели OSI (сетевом уровне). Он обеспечивает защиту данных на уровне IP-пакетов с использованием методов шифрования и аутентификации.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#podcast #всё
📚 TeachMeSkills IT-школа
Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 TeachMeSkills IT-школа
Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #debugging #xdebug #logging
🤔 Как отлаживать PHP-приложение?
💬 Кратко:
Для отладки можно использовать встроенные функции PHP, такие как
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как отлаживать PHP-приложение?
💬 Кратко:
Для отладки можно использовать встроенные функции PHP, такие как
var_dump() и error_reporting(), а также более сложные инструменты вроде Xdebug для работы с точками останова и трассировками. Логирование ошибок и профилирование кода также играют ключевую роль.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#Собес #register #boot #laravel
🤔 Что такое сервис-провайдеры в Laravel?
💬 Кратко:
Сервис-провайдеры в Laravel — это центральное место для конфигурации приложения и его сервисов. Они используются для регистрации и инстанцирования зависимостей и выполнения действий при старте приложения. Провайдеры содержат два ключевых метода:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое сервис-провайдеры в Laravel?
💬 Кратко:
Сервис-провайдеры в Laravel — это центральное место для конфигурации приложения и его сервисов. Они используются для регистрации и инстанцирования зависимостей и выполнения действий при старте приложения. Провайдеры содержат два ключевых метода:
register для регистрации сервисов и boot для выполнения кода после того, как все сервисы будут зарегистрированы.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #docker #entrypoint #caching
🤔 Какие типовые проблемы возникают при работе с Docker?
💬 Кратко:
Типичные проблемы — большие образы, утечки ресурсов, ошибки в Dockerfile, проблемы с кэшированием, конфликт портов, неправильная работа томов и зависимость от окружения. Также нередко возникают сложности с безопасностью.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Какие типовые проблемы возникают при работе с Docker?
💬 Кратко:
Типичные проблемы — большие образы, утечки ресурсов, ошибки в Dockerfile, проблемы с кэшированием, конфликт портов, неправильная работа томов и зависимость от окружения. Также нередко возникают сложности с безопасностью.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#course #курсы #тренажер
📚 Code Basics — старт в IT с нуля
Code Basics — бесплатная образовательная платформа для тех, кто хочет начать путь в IT. Проект создан командой и сообществом Хекслета, чтобы помочь новичкам понять принципы программирования, а не просто запомнить детали. В основе обучения — практический тренажёр, который помогает освоить базу и почувствовать логику кода.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Code Basics — старт в IT с нуля
Code Basics — бесплатная образовательная платформа для тех, кто хочет начать путь в IT. Проект создан командой и сообществом Хекслета, чтобы помочь новичкам понять принципы программирования, а не просто запомнить детали. В основе обучения — практический тренажёр, который помогает освоить базу и почувствовать логику кода.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #authentication #password #hash
🤔 Как реализовать аутентификацию в PHP?
💬 Кратко:
Для реализации аутентификации в PHP обычно используется проверка имени пользователя и пароля. Пароли должны храниться в базе данных в зашифрованном виде (например, с использованием
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как реализовать аутентификацию в PHP?
💬 Кратко:
Для реализации аутентификации в PHP обычно используется проверка имени пользователя и пароля. Пароли должны храниться в базе данных в зашифрованном виде (например, с использованием
bcrypt). При успешной аутентификации создаётся сессия для отслеживания состояния пользователя. Важно использовать HTTPS для защиты данных, а также предусмотреть дополнительные методы безопасности, такие как двухфакторная аутентификация.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Функция array_column может доставать не только колонки массива, как казалось бы, но и свойства объектов:
А вы знали про такое?
🚀 Пост Guru PHP: @msavin_dev
enum Status: string {
case Active = 'active';
case Inactive = 'inactive';
case Pending = 'pending';
}
// What does self::cases() return?
var_dump(Status::cases());
// array(3) {
// [0]=> enum(Status::Active) // <- These are OBJECTS
// [1]=> enum(Status::Inactive) // <- Not arrays
// [2]=> enum(Status::Pending)
// }
// Each case object has public readonly properties:
$case = Status::Active;
echo $case->value; // "active" (string - the backing value)
// array_column can extract these properties!
$values = array_column(Status::cases(), 'value');
var_dump($values);
// array(3) {
// [0]=> string(6) "active"
// [1]=> string(8) "inactive"
// [2]=> string(7) "pending"
// }
А вы знали про такое?
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: array_column - Manual
Return the values from a single column in the input array
👍2
#Собес #postgres #sql #php
🤔 Middle PHP разработчик в Анлимитед Продакшн
Техническое собеседование. Вилка: от 165к. Собеседование с фокусом на архитектуру веб-приложений, принципы SOLID, работу с базами данных PostgreSQL и понимание основ безопасности API.
💬 Вопросы:
- Алгоритмы агрегации данных — как работает GROUP BY под капотом (на примере CSV-файла без БД)?
- Как обеспечить уникальность необязательного поля (например, рабочего телефона) с учётом NULL-значений?
- Что кэшировать, а что нет? Инвалидация кэша при изменении данных.
- Стратегии кэширования тяжёлых вычислений (например, поиска товаров с фильтрами) — cache-aside, проблема cold start.
- Как работает идемпотентность под капотом — где и как хранятся ключи, с чем сравнивается запрос?
👉 Все вопросы из этого собеседования (26)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle PHP разработчик в Анлимитед Продакшн
Техническое собеседование. Вилка: от 165к. Собеседование с фокусом на архитектуру веб-приложений, принципы SOLID, работу с базами данных PostgreSQL и понимание основ безопасности API.
💬 Вопросы:
- Алгоритмы агрегации данных — как работает GROUP BY под капотом (на примере CSV-файла без БД)?
- Как обеспечить уникальность необязательного поля (например, рабочего телефона) с учётом NULL-значений?
- Что кэшировать, а что нет? Инвалидация кэша при изменении данных.
- Стратегии кэширования тяжёлых вычислений (например, поиска товаров с фильтрами) — cache-aside, проблема cold start.
- Как работает идемпотентность под капотом — где и как хранятся ключи, с чем сравнивается запрос?
👉 Все вопросы из этого собеседования (26)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #git_diff
🤔 Как посмотреть, что именно вы изменили в определенном файле git?
💬 Кратко:
Используйте команду
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как посмотреть, что именно вы изменили в определенном файле git?
💬 Кратко:
Используйте команду
git diff для просмотра изменений. Для конкретного файла:git diff <имя_файла>
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#documentation #http
📚 Все про HTTP
Тут собрано всё, что нужно знать про самый популярный протокол интернета
✓ Все статус-коды с понятными объяснениями
✓ Методы и заголовки
✓ Подборка инструментов для тестирования HTTP
✓ Чёткая инфа про HTTP/3
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Все про HTTP
Тут собрано всё, что нужно знать про самый популярный протокол интернета
✓ Все статус-коды с понятными объяснениями
✓ Методы и заголовки
✓ Подборка инструментов для тестирования HTTP
✓ Чёткая инфа про HTTP/3
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #request #response #framework
🤔 Как обрабатывается веб-запрос в фреймворке (Laravel/Yii2) — от Nginx через PHP-FPM до контроллера и возврата JSON-ответа?
💬 Кратко:
Веб-запрос проходит через несколько уровней обработки. Сначала Nginx принимает запрос и передает его PHP-FPM через FastCGI протокол. PHP-FPM запускает PHP-процесс, который загружает фреймворк. Фреймворк анализирует маршрут, находит соответствующий контроллер и выполняет его метод. Контроллер обрабатывает данные и возвращает JSON-ответ, который проходит обратно через всю цепочку к клиенту.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как обрабатывается веб-запрос в фреймворке (Laravel/Yii2) — от Nginx через PHP-FPM до контроллера и возврата JSON-ответа?
💬 Кратко:
Веб-запрос проходит через несколько уровней обработки. Сначала Nginx принимает запрос и передает его PHP-FPM через FastCGI протокол. PHP-FPM запускает PHP-процесс, который загружает фреймворк. Фреймворк анализирует маршрут, находит соответствующий контроллер и выполняет его метод. Контроллер обрабатывает данные и возвращает JSON-ответ, который проходит обратно через всю цепочку к клиенту.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал