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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
🤯 Совет по PHP

Функция parse_url() вернёт части URL, например, имя домена, если указать PHP_URL_HOST.
Документация

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Метод «json»

Если вы используете Laravel 10 и выше, есть элегантный способ чтения JSON-файлов с помощью File::json(). Вы также можете передать флаги, которые вы обычно передаете в json_decode(), на случай, если вы хотите выбросить исключение

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Перечислите доступные типы отношений в Laravel Eloquent.

Типы отношений в Laravel Eloquent включают:
One to One - один к одному.
One to Many - один ко многим.
Many to Many - многие ко многим.
Has One Through - один через.
Has Many Through - много через.
One to One (Polymorphic) - один к одному (полиморфный).
One to Many (Polymorphic) - один ко многим (полиморфный).
Many to Many (Polymorphic) - многие ко многим (полиморфный).

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Туториал: использование Go из PHP через FFI

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

В статье:

🟠 Пояснение концепции работы через FFI;

🟠 Разбор примера проекта на GitHub;

🟠 Легкий запуск через Docker Compose.

Если вы ищете способ сделать ваш PHP-код быстрее и хотите попробовать Go без переписывания всего проекта — обязательно к прочтению!
Хабр

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

Парсер с нулевыми зависимостями для чтения больших JSON из любого источника с эффективным использованием памяти.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Что такое защита от CSRF и CSRF токен?

CSRF (Cross-Site Request Forgery) - это атака, при которой вредоносный сайт может отправить запросы от имени авторизованного пользователя. Laravel защищает от таких атак, автоматически генерируя CSRF токен для каждой активной сессии. Этот токен необходимо включать в формы и AJAX запросы, чтобы подтвердить, что запросы приходят от авторизованных пользователей. B Laravel можно использовать директиву @csrf для добавления токена в Формы.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 LarsWiegers/laravel-maps
https://github.com/LarsWiegers/laravel-maps

Этот пакет позволяет легко использовать leaflet.js или Google Maps для создания карты в Laravel-проекте

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

Дан корень бинарного дерева поиска (BST) и целое число target, разделите дерево на два поддерева, где первое поддерево содержит узлы, которые меньше или равны значению target, а второе поддерево содержит узлы, которые больше значения target. Не обязательно, чтобы дерево содержало узел со значением target.

Кроме того, большая часть структуры исходного дерева должна сохраниться. Формально, для любого потомка c с родителем p в исходном дереве, если они оба находятся в одном поддереве после разделения, то узел c все еще должен иметь родителя p.

Верните массив из двух корней двух поддеревьев в порядке.

Пример:
Input: root = [4,2,6,1,3,5,7], target = 2
Output: [[2,1],[4,3,6,null,null,5,7]]


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

1⃣Базовый случай: Если корень равен null, верните массив, содержащий два указателя null. Это необходимо для обработки случая, когда дерево пустое.

2⃣Проверьте, больше ли значение корня целевого значения. Если да, рекурсивно разделите левое поддерево, вызвав splitBST(root->left, target). Прикрепите правую часть разделенного к левому поддереву корня. Верните массив, содержащий левую часть разделенного и текущий корень.

3⃣Если значение корня меньше или равно целевому значению, рекурсивно разделите правое поддерево, вызвав splitBST(root->right, target). Прикрепите левую часть разделенного к правому поддереву корня. Верните массив, содержащий левую часть разделенного и текущий корень.

😎 Решение:
class TreeNode {
public $val;
public $left;
public $right;
function __construct($val = 0, $left = null, $right = null) {
$this->val = $val;
$this->left = $left;
$this->right = $right;
}
}

class Solution {
function splitBST($root, $target) {
if ($root === null) {
return [null, null];
}

if ($root->val > $target) {
list($left, $right) = $this->splitBST($root->left, $target);
$root->left = $right;
return [$left, $root];
} else {
list($left, $right) = $this->splitBST($root->right, $target);
$root->right = $left;
return [$root, $right];
}
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🛞 Как ускорить массовую отправку HTTP-запросов в PHP

Постановка задачи:
Есть скрипт на PHP, который должен отправлять множество HTTP-запросов. Нужно сделать это как можно быстрее. Очевидное решение — параллельная отправка.

1⃣ последовательная обработка
Простой цикл с curl_init() и curl_exec() на каждый URL. Результат: 10 запросов выполняются за ~4.4 секунды.

2⃣ повторное использование curl-хэндла
Инициализируем curl один раз и переиспользуем. Время выполнения снижается до ~1.7 секунды.

3⃣ параллельная отправка с curl_multi_
Используем curl_multi_init() и запускаем запросы одновременно. Итог: всего 0.5 секунды на 10 запросов. Почти в 9 раз быстрее, чем изначально.

4⃣ отправка батчами (batching)
Если запросов сотни или тысячи, одновременно всё не потянет даже мощный сервер. Решение — отправка пакетами, например по 3. Это позволяет контролировать нагрузку. В нашем примере — ~0.8 секунды на 10 запросов.
Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Объясните валидацию в Laravel

B Laravel валидация используется для проверки данных, полученных от пользователя. Валидация осуществляется с помощью метода validate() объекта Request . Если данные не проходят проверку, Laravel автоматически генерирует ошибку и возвращает ответ с ошибкой. Для валидации можно использовать встроенные правила, такие как required, unique, max , и другие. Также можно определить кастомные правила для более сложных проверок.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Phptop — это простой профилировщик ресурсов PHP, безопасный для использования на продуктивных сайтах. Помогает отслеживать использование CPU и памяти на каждый запрос.

Отличный инструмент для разработчиков, стремящихся оптимизировать свои PHP-приложения.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 FastExcelWriter: Лёгкое и быстрое создание Excel-файлов на PHP

Если вы сталкивались с генерацией больших Excel-файлов на PHP, вы, вероятно, знакомы с PhpSpreadsheet. Хотя она функциональна, при работе с большими данными возможны проблемы с производительностью и потреблением памяти.

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

Преимущества FastExcelWriter:

🔵 Генерация файлов в 7–9 раз быстрее PhpSpreadsheet
🔵 Минимальное потребление памяти благодаря построчной записи
🔵 Поддержка стилей, форматирования, изображений, диаграмм и примечаний
🔵 Простой и лаконичный API для разработчиков
Хабр

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

PHP обрабатывает загрузку файлов через суперглобальный массив $_FILES . Файл отправляется через форму с атрибутом enctype="multipart/form- data" , и РНР сохраняет информацию о загружаемом файле в #_FILES, включая имя файла, тип и путь.

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

Создавай свои DTO — классы со свойствами

или используй spatie/laravel-data

Также не забудь про неизменяемость. Убедись, что твои DTO являются immutable (записываются один раз), чтобы можно было быть уверенным, что объект не был где-либо изменён.

Ключевое слово readonly тебе в этом поможет

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵 Разработчики на PHP, вы знали о Ticks в PHP?

Вы можете написать небольшой скрипт, чтобы остановить долго выполняющийся код по тайм-ауту — без использования pcntl!

Подходит не везде, но отлично заходит в циклах, плагинах или в песочнице.
Тык сюда

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

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

Коллекция в MongoDB - это группа документов, связанных между собой по смыслу. В отличие от таблиц в реляционных базах данных, коллекции не имеют жесткой схемы, что позволяет хранить документы с разной структурой в одной коллекции.

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