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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#Собес
🤔 Как используется наследование в РНР?

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Laravel использует Cron\CronExpression для определения времени выполнения запланированных задач.

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

Вот как я использовал его, чтобы дать пользователям возможность создавать и запускать автоматические отчёты по расписанию

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😎 Пример HTTP-сервера на PHP с использованием файберов. Улучшенная версия

Статья показывает, как сделать быстрый HTTP-сервер на PHP с файберами и расширением ev, обходя ограничения socket_select() и добиваясь лучшей производительности
Подробнее

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🛞 PHP под капотом: как работает генерация случайных чисел

Вы когда-нибудь задумывались, как компьютер, эта идеальная детерминированная машина, выполняющая команды с математической точностью, умудряется генерировать «случайные» числа? Ведь в его цифровом мире нет места настоящему хаосу — только чёткие алгоритмы и предсказуемые состояния.

Сегодня мы заглянем под капот PHP и разберёмся, как устроена эта иллюзия случайности!
Хабр

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

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
👍 Laravel Wayfinder

На той неделе команда Laravel выпустила новый инструмент — Wayfinder — в бета-версии: тыкГитхаб

Он генерирует TypeScript-функции, которые можно импортировать на фронтенде для ваших контроллеров и маршрутов

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨‍💻 Теперь PHPUnit по умолчанию использует in-memory SQLite базу данных для тестов

Ранее эти настройки в файле phpunit.xml были закомментированы. Теперь они будут активны по умолчанию

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

Сохраняй, чтобы не потерять

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

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 что если вы хотите сделать continue в нескольких foreach-циклах?

Сначала я попробовал continue; continue;, что (очевидно) не сработало — потом узнал, что в PHP можно передать число как {level}, указав, сколько уровней вложенности нужно пропустить.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😴 Ищете API-клиенты, альтернативы Postman?

Вот три инструмента, которые особенно нравятся разработчикам:

🟠HTTPie — подсветка синтаксиса и удобное переключение между CLI и GUI

🟠Yaak — организация рабочих пространств и низкое потребление памяти

🟠Insomnia — поддержка GraphQL и чистый интерфейс

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

Иногда вы можете захотеть пропустить выполнение команды, основываясь на определенном условии. Laravel включает метод «skip» для выполнения этого

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 В Laravel появилась новая функция — мемоизация кэша

Теперь с помощью метода Cache::memo можно обернуть любое хранилище кэша в обёртку с мемоизацией.

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

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

PHP взаимодействует с JavaScript, генерируя JavaScript-код, который затем выполняется на клиентской стороне. РНР может передавать данные в vaScript через HTML или создавать асинхронные запросы с помощью AJAX, позволяя динамично обновлять страницы без перезагрузки.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Выпущена документация для нового fluent-класса URI в Laravel, который значительно упрощает анализ и манипулирование URI.

Теперь можно даже возвращать экземпляры этого класса из маршрутов, чтобы автоматически генерировать ответы с перенаправлением на указанный адрес.
Документация Laravel 12.x – URI

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 711. Number of Distinct Islands II

Вам дана двоичная матричная сетка m x n. Остров - это группа 1 (представляющая сушу), соединенных в четырех направлениях (горизонтальном или вертикальном). Можно предположить, что все четыре края сетки окружены водой. Остров считается одинаковым с другим, если они имеют одинаковую форму, или имеют одинаковую форму после поворота (только на 90, 180 или 270 градусов) или отражения (влево/вправо или вверх/вниз). Верните количество разных островов.

Пример:
Input: grid = [[1,1,0,0,0],[1,0,0,0,0],[0,0,0,0,1],[0,0,0,1,1]]
Output: 1


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

1⃣Пройдите по каждому элементу матрицы, если найдена земля (1), выполните DFS для обнаружения всех связанных с этим островом земель и сохраните форму острова.

2⃣Нормализуйте форму острова, применив все возможные повороты и отражения, чтобы найти каноническую форму.

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

😎 Решение:
function numDistinctIslands2($grid) {
$uniqueIslands = [];

for ($i = 0; $i < count($grid); $i++) {
for ($j = 0; $j < count($grid[0]); $j++) {
if ($grid[$i][$j] == 1) {
$shape = [];
dfs($grid, $i, $j, $i, $j, $shape);
$uniqueIslands[normalize($shape)] = true;
}
}
}

return count($uniqueIslands);
}

function dfs(&$grid, $i, $j, $baseI, $baseJ, &$shape) {
if ($i < 0 || $i >= count($grid) || $j < 0д

Задача
: 
711. Number of Di$grid[$i][$j]
 == 0) {
return;
}
$grid[$i][$j] = 0;
$shape[] = [$i - $baseI, $j - $baseJ];
dfs($grid, $i + 1, $j, $baseI, $baseJ, $shape);
dfs($grid, $i - 1, $j, $baseI, $baseJ, $shape);
dfs($grid, $i, $j + 1, $baseI, $baseJ, $shape);
dfs($grid, $i, $j - 1, $baseI, $baseJ, $shape);
}

function normalize($shape) {
$shapes = array_fill(0, 8, []);
foreach ($shape as $p) {
$x = $p[0];
$y = $p[1];
$shapes[0][] = [$x, $y];
$shapes[1][] = [$x, -$y];
$shapes[2][] = [-$x, $y];
$shapes[3][] = [-$x, -$y];
$shapes[4][] = [$y, $x];
$shapes[5][] = [$y, -$x];
$shapes[6][] = [-$y, $x];
$shapes[7][] = [-$y, -$x];
}
foreach ($shapes as &$s) {
sort($s);
}
$minShape = implode(",", array_map(function($p) { return implode(",", $p); }, $shapes[0]));
foreach ($shapes as $s) {
$sStr = implode(";", array_map(function($p) { return implode(",", $p); }, $s));
$minShape = min($minShape, $sStr);
}
return $minShape;
}


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