PHP Backend | YeaHub – Telegram
PHP Backend | YeaHub
388 subscribers
234 photos
10 videos
428 links
Теория, подготовка к интервью и курсы для PHP разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#trainer #задачник
📚 Задачник PHP по уровням

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

Перейти к материалу

👉 База вопросов 👉 Новости
1
С чего начать? → Всё самое важное здесь

Guru PHP at YeaHub | Mikhail Savin 🖥

Всем привет!

Я PHP backend разработчик, в прошлом работал тимлидом 2-х команд.
Максимальная ЗП, которую получал с одной работы в месяц — 993к до вычета налогов. Так же совмещал 2 работы (300к+400к)

Я контрибьютил в Docker, ClickHouse, JetBrains, Laravel, Symfony, Composer и др. Подробнее можно посмотреть в моем аккаунте на ГитХаб

Я - ментор по разработке на PHP. Помогаю вкатываться как новичкам, так и опытным в разработку.

А ещё я Guru по PHP в YeaHub: отвечаю за качество контента во всей экосистеме.

📱 Мой блог в Telegram

📱 Мой YouTube канал

🖥 GitHub

А ещё подписывайтесь на другие каналы Экосистемы YeaHub

Проект YeaHub:

🚀 YeaHub | 🖥 GitHub | Telegram

🎵 TikTok | 📹 YouTube | 👥 Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝21🔥1
#Собес #interface #abstraction #contract
🤔 Какова цель использования интерфейсов в PHP?

💬 Кратко:

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

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1🔥1
mlocati/php-extension-installer

Полезная утилита, которая решает вечную боль сборки 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


🚀 Пост Guru PHP: @msavin_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
#Собес #route #web #api
🤔 Какие файлы маршрутов по умолчанию существуют в Laravel?

💬 Кратко:

В Laravel по умолчанию существуют четыре файла маршрутов: web.php для веб-маршрутов, api.php для API-маршрутов, console.php для команд консоли и channel.php для каналов вещания событий.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
#book #памятка
📚 Памятка PHP/GoLang разработчику для подготовки к собеседованиям

Это методичка(краткий справочник) по темам, знание которых может понадобиться при собеседовании на бэкендера (с уклоном в Golang/PHP) и на работе.

Перейти к материалу

👉 База вопросов 👉 Новости
1
#Собес #phpunit #unit #test
🤔 Как написать юнит-тесты в PHP?

💬 Кратко:

В PHP юнит-тесты пишутся с использованием PHPUnit, который позволяет проверять корректность работы кода. Для создания тестов необходимо создать класс с методами, проверяющими функциональность программы, и использовать различные утверждения для проверки результатов. PHPUnit поддерживает создание фиктивных объектов и наборов данных для тестирования различных сценариев.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
#Собес #transaction #deadlock #database
🤔 Как предотвратить взаимоблокировки в базе данных?

💬 Кратко:

Взаимоблокировки возникают, когда несколько транзакций блокируют друг друга, ожидая освобождения ресурсов. Чтобы их избежать, следует:

- Всегда обращаться к ресурсам базы данных в одном порядке.
- Сокращать время выполнения транзакций, чтобы уменьшить вероятность конфликта.
- Использовать таймауты для автоматического завершения зависших транзакций.
- Регулярно анализировать производительность базы данных и оптимизировать запросы, добавляя индексы и избегая сложных блокировок.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
PHP-FPM status page

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

🚀 Пост Guru PHP: @msavin_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥2
#Собес #transaction #pdo #mysql
🤔 Как выполнять транзакции в PHP с MySQL?

💬 Кратко:

Транзакции позволяют выполнять несколько запросов к базе данных как единое целое. Если один из запросов завершится неудачей, можно откатить изменения. В PHP транзакции реализуются через MySQLi или PDO, с использованием методов beginTransaction, commit и rollBack.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍2
#Собес #ipsec #layer_3 #encryption
🤔 На каком уровне работает IPsec?

💬 Кратко:

IPsec работает на 3-м уровне модели OSI (сетевом уровне). Он обеспечивает защиту данных на уровне IP-пакетов с использованием методов шифрования и аутентификации.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#podcast #всё
📚 TeachMeSkills IT-школа

Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.


Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #debugging #xdebug #logging
🤔 Как отлаживать PHP-приложение?

💬 Кратко:

Для отладки можно использовать встроенные функции PHP, такие как var_dump() и error_reporting(), а также более сложные инструменты вроде Xdebug для работы с точками останова и трассировками. Логирование ошибок и профилирование кода также играют ключевую роль.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
#Собес #register #boot #laravel
🤔 Что такое сервис-провайдеры в Laravel?

💬 Кратко:

Сервис-провайдеры в Laravel — это центральное место для конфигурации приложения и его сервисов. Они используются для регистрации и инстанцирования зависимостей и выполнения действий при старте приложения. Провайдеры содержат два ключевых метода: register для регистрации сервисов и boot для выполнения кода после того, как все сервисы будут зарегистрированы.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #docker #entrypoint #caching
🤔 Какие типовые проблемы возникают при работе с Docker?

💬 Кратко:

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

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
#course #курсы #тренажер
📚 Code Basics — старт в IT с нуля

Code Basics — бесплатная образовательная платформа для тех, кто хочет начать путь в IT. Проект создан командой и сообществом Хекслета, чтобы помочь новичкам понять принципы программирования, а не просто запомнить детали. В основе обучения — практический тренажёр, который помогает освоить базу и почувствовать логику кода.

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #authentication #password #hash
🤔 Как реализовать аутентификацию в PHP?

💬 Кратко:

Для реализации аутентификации в PHP обычно используется проверка имени пользователя и пароля. Пароли должны храниться в базе данных в зашифрованном виде (например, с использованием bcrypt). При успешной аутентификации создаётся сессия для отслеживания состояния пользователя. Важно использовать HTTPS для защиты данных, а также предусмотреть дополнительные методы безопасности, такие как двухфакторная аутентификация.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Функция array_column может доставать не только колонки массива, как казалось бы, но и свойства объектов:


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"
// }


А вы знали про такое?

🚀 Пост Guru PHP: @msavin_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#Собес #postgres #sql #php

🤔 Middle PHP разработчик в Анлимитед Продакшн

Техническое собеседование. Вилка: от 165к. Собеседование с фокусом на архитектуру веб-приложений, принципы SOLID, работу с базами данных PostgreSQL и понимание основ безопасности API.

💬 Вопросы:

- Алгоритмы агрегации данных — как работает GROUP BY под капотом (на примере CSV-файла без БД)?

- Как обеспечить уникальность необязательного поля (например, рабочего телефона) с учётом NULL-значений?

- Что кэшировать, а что нет? Инвалидация кэша при изменении данных.

- Стратегии кэширования тяжёлых вычислений (например, поиска товаров с фильтрами) — cache-aside, проблема cold start.

- Как работает идемпотентность под капотом — где и как хранятся ключи, с чем сравнивается запрос?

👉 Все вопросы из этого собеседования (26)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #git_diff
🤔 Как посмотреть, что именно вы изменили в определенном файле git?

💬 Кратко:

Используйте команду git diff для просмотра изменений. Для конкретного файла:
git diff <имя_файла>


📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал