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
#статьи
😊 Почему вы должны указывать тип данных в массивах в PHP

Статья обсуждает важность и преимущества использования типов массивов в PHP для повышения ясности кода, улучшения автодополнения в IDE и улучшения статического анализа.
Читать

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

Библиотека для структурированной экстракции данных на PHP, основанная на LLM. Создан для простоты, прозрачности и контроля.

Пример показывает, как инструктор извлекает структурированную информацию из предоставленного текста (или последовательности сообщений в чате).
Гитхаб

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

Магические методы в РНР - это методы с особыми именами, которые автоматически вызываются при определенных действиях с объектами, например, при создании объекта, доступе к недоступным свойствам или вызове несуществующих методов. Примеры включают _construct() , _get(), _set(), _call() , и другие.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😬 Новый пакет: Laravel Console Timer

Простой трейт, который добавляет отслеживание времени выполнения к вашим консольным командам в Laravel.

Полезен для

🟠Отслеживания времени выполнения команд

🟠Измерения времени выполнения отдельных операций внутри команд

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#новости
🛞 В PHP 8.5 появятся две новые функции для работы с массивамиarray_first() и array_last() — для удобного получения соответственно первого и последнего значения массива
Подробнее

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

Нужно жадно загрузить связи, но при этом выбрать только определённые столбцы?

Используйте метод with() с указанием нужных столбцов, чтобы сократить использование памяти и размер запроса при работе с большими объёмами данных.
Ссылка на документацию

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое поздняя статическая привязка (Late Static Binding) ?

Поздняя статическая привязка (LSB) в РНР позволяет методу правильно ссылаться на класс, который его вызвал, а не на класс, в котором метод был определен. Это решает проблему статической привязки, когда используется ключевое слово self , и позволяет методам вести себя корректно в контексте наследования.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵‍💫 Метод findOrFail также принимает список идентификаторов. Если какой-либо из этих идентификаторов не найден, то он «ошибочен».

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

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

Это аккуратно, чисто и очень читаемо.

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

Абстрактный класс может содержать как абстрактные, так и реализованные методы, а также имеет возможность хранить состояние в виде свойств Интерфейс, с другой стороны, только определяет методы, которые должен реализовать класс, без их реализации. Один класс может реализовать несколько интерфейсов, но наследовать только один абстрактный класс.

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

Знаете ли вы, что можно привязать типизированные переменные к контейнеру? Laravel поставляется с 3 методами, позволяющими вам это сделать: «when()», «needs()» и «give()» вы можете продолжать использовать DI без опасений

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🛞 Как интегрировать Laravel с Apache Kafka

Статья рассказывает о том, как интегрировать Apache Kafka с Laravel на примере реального кейса — обработка заказа в e-commerce приложении, включая оплату и обновление склада.
Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from YeaHub
🥳 В YeaHub теперь 2040 пользователей!

На этой неделе мы побили рекорд по количеству регистраций — и это важный для нас рубеж! 🚀 Мы не останавливаемся на достигнутом и готовим крутые обновления:

- Обновленный лендинг — станет еще информативнее и удобнее;
- Публичные страницы коллекций — делитесь своими подборками с сообществом;
- Избранное для вопросов — сохраняйте самое важное в один клик;
- Горячий режим 🔥 — для дополнительной мотивации;
- Мультипрофили — удобное переключение между аккаунтами;
- Новый сервис "Полезные ресурсы" — всё необходимое для развития в одном месте.

А еще мы будем еженедельно пополнять коллекции актуальными вопросами с собеседований по всем направлениям.

И это только начало! В планах — запуск 20+ новых сервисов для развития, нетворкинга и досуга. Оставайтесь с нами — будет ещё круче! 💪

👍 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Объясните преимущества и недостатки использования фреймворка в контексте РНР.

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

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

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

По сути, это как npx, но для Composer
Гитхаб

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

Вам даны строки jewels, представляющие типы камней, которые являются драгоценностями, и stones, представляющие камни, которые у вас есть. Каждый символ в stones является типом камня, который у вас есть. Вы хотите узнать, сколько из камней, которые у вас есть, также являются драгоценностями.

Буквы чувствительны к регистру, поэтому "a" считается другим типом камня, чем "A".

Пример:
Input: jewels = "aA", stones = "aAAbbbb"
Output: 3


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

1⃣Создайте множество из строки jewels для быстрой проверки, является ли камень драгоценностью. Это позволит эффективно проверять принадлежность каждого камня к драгоценностям.

2⃣Инициализируйте счетчик для подсчета количества камней, которые являются драгоценностями. Пройдите по каждому символу в строке stones и проверьте, содержится ли этот символ в множестве jewels.

3⃣Если символ содержится в множестве, увеличьте счетчик. В конце верните значение счетчика, которое будет количеством камней, являющихся драгоценностями.

😎 Решение:
class Solution {
numJewelsInStones(J, S) {
let ans = 0
for (const s of S) {
for (const j of J) {
if (j === s) {
ans++
break
}
}
}
return ans
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Новое в Symfony 7.3: компонент ObjectMapper

Во многих Symfony-приложениях часто используют DTO-объекты для переноса данных между слоями. Например, вы можете создать DTO на основе Doctrine-сущности, изменить его с помощью Symfony Form, а затем снова замапить обновлённые данные в сущность.

Код для маппинга DTO обратно в сущность часто выглядит так:
$user = new User();
$user->name = $dto->name;
$user->email = $dto->email;
$user->roles = ['ROLE_USER'];
// …


Это утомительно и подвержено ошибкам. Поэтому в Symfony 7.3 введён новый компонент ObjectMapper для переноса данных между объектами. С его помощью предыдущий пример становится намного проще:

// при создании нового объекта на основе другого
$user = $mapper->map($dto, User::class);

// при обновлении существующего объекта другим объектом
$mapper->map($dto, $user);

Подробнее

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