PHP Backend | YeaHub
223 subscribers
130 photos
7 videos
232 links
Теория, подготовка к интервью и курсы для PHP разработчиков

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
👨‍💻 Внедряем формулы как в Эксель

Пользователи постоянно меняют логику подсчёта? Они не довольны скоростью с которой вы меняете код? Уже надоело так часто менять одно и тоже? Если да, то получайте решение: пускай пользователи сами пишут формулы на языке, который им более знаком: это формулы эксель. От вас потребуется лишь надо научить своё приложение считать это. Как это сделать? С помощью чёрной магии конечно!
Хабр

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как предотвратить взаимоблокировки в базе данных?

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Неявное привязывание Enum = чистые и типобезопасные маршруты

Определите enum на основе строки, используйте его в качестве type hint в определении маршрута — и Laravel автоматически проверит сегменты маршрута, возвращая 404 для недопустимых значений.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Совет по Bug Bounty

Утечка страницы PHP Info.

Открытая страница PHP Info может раскрывать множество конфиденциальных данных — от настроек конфигурации до пользовательских сессионных куки.

Например, в сочетании с XSS это может привести к полному захвату учетной записи.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😬 Хардкорная игра-тренажёр для PHP-разработчиков

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

Правило всего одно: нужно переписать функцию так, чтобы она вернула true.

С каждым уровнем сложность заданий растёт. Никаких объяснений и руководств, всё по хардкору

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как реализовать кэширование в РНР для оптимизации запросов к базе данных?

Кэширование сохраняет результаты запросов в быстром хранилище (например, Redis или Memcached) для последующего использования. При повторном запросе приложение сначала проверяет кэш. Если данные найдены, они возвращаются из кэша, а не из базы данных. Это значительно ускоряет выполнение запросов и уменьшает нагрузку на сервер базы данных.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Совет по PHP: First-Class Callables

PHP 8.1 представил first-class callables, которые упрощают синтаксис, особенно при работе с коллекциями Laravel, где часто используются замыкания

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Знали ли вы, что PHP переподключается к Redis при каждом запросе?

В Laravel 12 появилась новая переменная окружения REDIS_PERSISTENT, которая позволяет сохранять соединения с Redis между запросами.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 PhpLDAPadmin

Это веб инструмент управления данными LDAP для системных администраторов. Он обычно известен и называется "PLA".

При этом, PLA создан с учетом соответствия RFC LDAP, что позволяет использовать его с любым сервером LDAP
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Объясните преимущества и недостатки использования фреймворка в контексте РНР.

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Что умеет Rector: пишем кастомные правила для автоматизации рефакторинга PHP-проектов

Если вам часто приходится сталкиваться с рефакторингом старых PHP-проектов, при этом их потребности выходят за пределы штатного набора правил, эта статья для вас.
Хабр

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Совет по Laravel Eloquent

Если вам нужно добавить условие в запрос на основе некоторого условия в PHP, используйте метод when() в Eloquent.

Вы предпочитаете A или B?

Код становится короче и удобнее для чейнинга с другими методами запроса, но... может быть, менее читаемым?

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🤯 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов

Кешировать нужно с умом. И нет, LRU — не серебряная пуля.

В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии

Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое полиморфизм в РНР?

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 441. Arranging Coins

У вас есть n монет, и вы хотите построить лестницу из этих монет. Лестница состоит из k рядов, где i-й ряд содержит ровно i монет. Последний ряд лестницы может быть неполным.

Дано целое число n, верните количество полных рядов лестницы, которые вы сможете построить.

Пример:
Input: n = 5
Output: 2
Explanation: Because the 3rd row is incomplete, we return 2.


👨‍💻 Алгоритм:

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

2⃣Напомним, что условие задачи можно выразить следующим образом: k(k + 1) ≤ 2N.

3⃣Это можно решить методом выделения полного квадрата, (k + 1/2)² - 1/4 ≤ 2N. Что приводит к следующему ответу: k = [sqrt(2N + 1/4) - 1/2].

😎 Решение:
class Solution {
function arrangeCoins($n) {
return (int)(sqrt(2 * $n + 0.25) - 0.5);
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 PDO или ORM?

PDO — для тех, кто ценит полный контроль. Пишете SQL вручную, понимаете, что происходит под капотом. Гибкость максимальна, но код засоряется повторениями, а сложные запросы становятся испытанием при развитии проекта.

ORM (Eloquent, Doctrine) — путь удобства. Работаете с объектами вместо SQL, код становится чище, а разработка быстрее. Но магия абстракции может привести к неожиданным SQL-запросам, проблемам с производительностью и сложной отладке.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 Ваш файл laravel.log слишком большой? Трудно читать/искать нужную информацию?

РЕШЕНИЕ 1: Команды в терминале

Если нужно что-то найти ОДИН РАЗ, используйте одну из этих команд:
🟠tail -n 100 storage/logs/laravel.log – показать последние 100 строк
🟠tail -f storage/logs/laravel.log – потоковое обновление лога в реальном времени
🟠grep -i "error" storage/logs/laravel.log – поиск ошибок (без учета регистра)

РЕШЕНИЕ 2: Изменение режима логирования на "daily"

В файле .env установите:
LOG_CHANNEL=daily

Это заставит Laravel создавать новый лог-файл каждый день (например, laravel-2025-01-01.log).

РЕШЕНИЕ 3: Пакет Log Viewer

Пакет opcodesio/log-viewer предоставляет удобную панель для просмотра логов.

РЕШЕНИЕ 4: Внешние платные инструменты

Сервисы ОТСЛЕЖИВАНИЯ ОШИБОК, которые автоматически собирают и организуют ошибки:
🟠Sentry
🟠Bugsnag
🟠Flare

Сервисы ДЛЯ УПРАВЛЕНИЯ ЛОГАМИ:
🟠Papertrail
🟠Loggly
🟠LogDNA

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое инкапсуляция и как она реализуется в РНР?

Инкапсуляция - это принцип ООП, при котором данные и методы, работающие с этими данными, объединяются в одном классе, а доступ к этим данным ограничивается с помощью модификаторов доступа (public, private, protected). Это позволяет скрыть внутренние детали реализации и управлять доступом к данным.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 Ускоряем работу в PhpStorm: самые полезные хоткеи

И снова горячие клавиши. Вот подборка для работы с кодом:

🟠 Alt + Enter: универсальный контекстный помощник, отображающий доступные действия в зависимости от положения курсора.

🟠 Ctrl + P: показать подсказку по параметрам метода или функции.

🟠 Ctrl + Shift + I: быстрый просмотр реализации метода или функции.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Buggregator — удобная отладка

Buggregator — это идеальный инструмент отладки, который работает как сервер VarDumper, профилировщик Xhprof, локальный SMTP-сервер, локальный Sentry и многое другое.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM