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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
😎 Используйте метод upsert() для эффективных операций "вставить или обновить" в одном SQL-запросе.
Это намного быстрее, чем сначала проверять существование записи, особенно при массовых вставках.

Документация: https://laravel.com/docs/12.x/queries#upserts

Примечание: Все базы данных, кроме SQL Server, требуют, чтобы колонки, указанные во втором аргументе метода upsert, имели первичный или уникальный индекс.
Кроме того, драйверы баз данных MariaDB и MySQL игнорируют второй аргумент upsert и всегда используют первичный и уникальные индексы таблицы для определения существующих записей.

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

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

Вот пример кода, который я увидел в одном опенсорс проекте:

Зарегистрируй кастомные функции как макросы (Macro) в фасаде Response через ServiceProvider.

Конечно, альтернатива — вынести эти методы в трейты или базовый контроллер

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #php
🤔 Как работают сессии в РНР?

Сессия - это механизм сохранения данных между запросами. При запуске сессии сервер генерирует уникальный идентификатор (ID), который хранится в cookie или передаётся через URL. Сервер сохраняет данные сессии на стороне сервера, а клиент использует идентификатор для доступа к этим данным.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #php
🤔 Как можно улучшить производительность РНР-приложения?

Для улучшения производительности используйте кеширование (например, Opcache), минимизируйте сложность запросов к базе данных с помощью индексации и подготовленных запросов, а также обновляйте РНР до последней версии. Сократите использование тяжёлых библиотек, оптимизируйте работу с файлами и используйте CDN для загрузки статического контента.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#полезное
😐 При создании Eloquent-скоупов, если у вас есть одинаковые скоупы в нескольких моделях, использующие одно и то же имя колонки, указывайте имя таблицы в качестве префикса.

Это поможет избежать SQL-ошибок вида "ambiguous column".

Источник: проект Larasense
https://github.com/nabilhassen/larasense/blob/main/app/Models/Material.php

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🫠 Нужно добавить несколько колонок в определённую позицию таблицы?

Используйте метод after() вместе с замыканием, чтобы сгруппировать несколько связанных колонок и вставить их после уже существующей колонки.

Ссылка на документацию: https://laravel.com/docs/12.x/migrations#column-order

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

💬 Кратко:

PHP обрабатывает запросы изолированно, создавая новый процесс или поток для каждого запроса, в зависимости от конфигурации сервера. Например, Apache с модулем mod_php использует модель мультипроцессов, а PHP-FPM (FastCGI Process Manager), часто используемый с Nginx, использует пул процессов для обработки запросов. Эти процессы работают независимо, и каждый запрос не влияет на другие.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
😘 Совет по Laravel

Используй insertOrIgnore() для вставки записей с пропуском дубликатов без выброса ошибок

Отлично подходит для массового импорта, когда часть данных уже может существовать.
Метод тихо игнорирует ограничения, не выбрасывая исключения.

Ссылка на документацию: https://laravel.com/docs/12.x/queries#insert-statements

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#ЛитКод
Задача: 720. Longest Word in Dictionary

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

Пример:
Input: words = ["w","wo","wor","worl","world"]
Output: "world"


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

1⃣Отсортируйте массив слов по длине и лексикографическому порядку.

2⃣Используйте множество для отслеживания слов, которые можно построить.

3⃣Пройдите по каждому слову в отсортированном массиве и добавьте его в множество, если все его префиксы уже существуют в множестве.

😎 Решение:
function longestWord($words) {
sort($words);
$validWords = ["" => true];
$longest = "";
foreach ($words as $word) {
if (isset($validWords[substr($word, 0, -1)])) {
$validWords[$word] = true;
if (strlen($word) > strlen($longest)) {
$longest = $word;
}
}
}
return $longest;
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Нужно получать значения из входных данных в нужном типе, а не всегда как строки?

Используй методы integer(), boolean(), array(), date() и enum()

Больше никакого ручного кастинга.

Документация: https://laravel.com/docs/12.x/requests#retrieving-input

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#полезное
😇 Сегодня я узнал о синтаксисе when(app()->isLocal()) в файле маршрутов Laravel.

Выглядит прям как обычное английское предложение, очень читаемо

Источник: https://github.com/laravelstart/laravelstart/blob/main/routes/web.php

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

Жизненный цикл запроса в РНР начинается с получения НТТР-запроса сервером. Сервер передает запрос РНР-интерпретатору, который выполняет скрипт, взаимодействует с базой данных (если требуется), и генерирует ответ в формате HTML или другого типа контента. Ответ отправляется клиенту, где отображается в браузере. Каждый запрос обрабатывается изолированно, и состояние приложения между запросами не сохраняется без использования сессий или базы данных.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
🥄 Если у вас есть индексы в БД, то помните, что MySQL не может использовать их с функциями.

Наиболее распространенная ситуация — это поля и функции даты, такие как YEAR или MONTH.

Поэтому вместо YEAR(paid_at) используйте whereBetween

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