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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#статьи
🛞 Преобразование JSON в типизированные коллекции с помощью функции Laravel AsCollection::of()

Если вы когда-либо сохраняли сложные структуры данных в JSON-колонках и потом пытались с этим работать — вы знаете, как легко всё превратить в кашу из массивов. Но Laravel снова на шаг впереди. Встречайте: AsCollection::of()

Теперь можно автоматически превращать JSON-данные в коллекции объектов нужного класса. Это значит — типы, методы, читаемость и никаких костылей!
Полная статья

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 718. Maximum Length of Repeated Subarray

Если даны два целочисленных массива nums1 и nums2, верните максимальную длину подмассива, который встречается в обоих массивах.

Пример:
Input: nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
Output: 3


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

1⃣Создайте двумерный массив для хранения длин общих подмассивов.

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

3⃣Итеративно обновляйте массив, сравнивая элементы обоих массивов и обновляя максимальную длину подмассива.

😎 Решение:
function findLength($nums1, $nums2) {
$dp = array_fill(0, count($nums1) + 1, array_fill(0, count($nums2) + 1, 0));
$maxLength = 0;
for ($i = count($nums1) - 1; $i >= 0; $i--) {
for ($j = count($nums2) - 1; $j >= 0; $j--) {
if ($nums1[$i] == $nums2[$j]) {
$dp[$i][$j] = $dp[$i + 1][$j + 1] + 1;
$maxLength = max($maxLength, $dp[$i][$j]);
}
}
}
return $maxLength;
}


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

Пространства имён в РНР позволяют группировать классы, функции и константы, чтобы избежать конфликтов имен. Они особенно полезны при интеграции сторонних библиотек. Пространства имен создаются с помощью ключевого слова namespace.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😘 PHP готовится к историческому изменению лицензирования. В версии 9.0 язык перейдёт с собственных PHP License и Zend Engine License на стандартную BSD-3, что устранит давние юридические сложности. Это решение одобрено PHP Group и сейчас проходит финальное обсуждение.

Переход особенно важен для дистрибутивов Linux и open-source сообщества — новая лицензия полностью совместима с GPL. Изменения коснутся только юридических аспектов, сохранив все права разработчиков и пользователей. Интересно, что PHP начинал с GPLv2, но с третьей версии перешёл на двойное лицензирование.
Ссылка клик

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
PHP-разработчики, пишущие на JavaScript, после того как у них челюсть отвисает от того, что аналогичный функционал не идет из коробки в JS.

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

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#видео
😐 Вот как нужно писать на PHP

Инструменты для современного PHP сейчас реально на хорошем уровне. А значит, писать на PHP можно куда лучше, чем ты, возможно, думаешь.

Вдохновившись докладом Нуно Мадуро про современные PHP-инструменты, автор занялся обновлением своего стартового набора Fission, чтобы убедиться, что использует всё самое актуальное из того, что предлагает PHP для разработки.

И это полностью изменило его подход к написанию кода на PHP. Он нашёл идеальный стек инструментов.

https://www.youtube.com/watch?v=qkG2ybcmpZc

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

PHP выделяет следующие основные типы ошибок: фатальные (Fatal Errors), предупреждения (Warnings), уведомления (Notices), ошибки синтаксиса (Parse Errors), устаревшие (Deprecated Errors) и строгие (Strict Errors). Каждый из них сигнализирует о разных проблемах в коде, от критических до МеНее ЗНачительных.

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

Используй методы whereAny(), whereAll() или whereNone() вместо написания множества условий с OR или AND. Код станет гораздо чище и понятнее!

Документация: https://laravel.com/docs/12.x/queries#where-any-all-none-clauses

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Как заставить ИИ писать код по стилю

Нашёл оптимизированные для ИИ гайдлайны, специально отформатированные для Claude Code и аналогичных инструментов. Это позволяет генерировать код в соответствии со стандартами Laravel и PHP от Spatie.

Файл с гайдлайнами, адаптированными под ИИ, можно посмотреть здесь: https://spatie.be/guidelines/ai

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

SQL-иньекций можно избежать, используя подготовленные запросы с PDO или MySQLi, которые отделяют данные от SQL-кода. Также важно валидировать и фильтровать пользовательский ввод, ограничивать права доступа к базе данных, использовать современные инструменты для работы с базой и обновлять программное обеспечение.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥄 Новое в Laravel 12.21 на этой неделе:

Теперь при запуске php artisan db:seed будет отображаться время выполнения.

Ранее Laravel показывал это только при запуске с указанием конкретного сидера через --class=SomeSeeder.

Ссылка на PR:
https://github.com/laravel/framework/pull/56310

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Совет по PHP: знали ли вы, что isset() может принимать несколько аргументов?

Функция вернёт true только в том случае, если все переданные переменные считаются установленными.
Проверка выполняется слева направо и останавливается при первом необъявленном или null-значении.

Документация: https://php.net/manual/en/function.isset.php

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 How to: миграция больших баз данных в Laravel

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

Основная стратегия — это метод «Double Write + Backfill», который включает несколько шагов:

1⃣ Добавление новых колонок или таблиц без удаления старых, чтобы данные продолжали работать.
2⃣ Реализация логики «двойной записи»: во время обновлений и вставок данных записываются в обе колонки (старую и новую).
3⃣ Заполнение новых данных с помощью команд Artisan для миграции существующих записей.
4⃣ Подготовка плана отката на случай ошибок.
5⃣ Переход на новую структуру после завершения миграции и перехода всех данных.
Medium

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #php
🤔 В чем разница между методами GET и POST?

Метод GET используется для получения данных, а POST — для их отправки на сервер. Данные GET передаются через URL, a POST - в теле запроса. GET запросы кэшируются и могут быть сохранены в истории браузера, тогда как POST запросы более защищены для передачи данных.

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