PHP Portal | Программирование
4.85K subscribers
408 photos
20 videos
2 files
209 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для PHP-разработчика

Связь: @devmangx
Download Telegram
Совет по Laravel Eloquent

Если вам нужно добавить условие в запрос на основе некоторого условия в PHP, используйте метод when() в Eloquent.

Вы предпочитаете A или B?

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

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍153🔥3
Ещё один клёвый тренажёр+учебник по SQL

Тут можно потренироваться в хитрых джойнах, агрегациях и понабивать руку. Интерфейс очень приятный и позволяет потыкать схему БД, даёт подсказки как в коде, так и непосредственно по решению

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

👉 https://sql-academy.org/ru/trainer

👉 @PHPgx | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3
Ваш файл laravel.log слишком большой? Трудно читать/искать нужную информацию?

ЧЕТЫРЕ возможных решения ☕️

РЕШЕНИЕ 1: Команды в терминале

Если нужно что-то найти ОДИН РАЗ, используйте одну из этих команд:
🔹tail -n 100 storage/logs/laravel.log – показать последние 100 строк
🔹tail -f storage/logs/laravel.log – потоковое обновление лога в реальном времени
🔹grep -i "error" storage/logs/laravel.log – поиск ошибок (без учета регистра)

РЕШЕНИЕ 2: Изменение режима логирования на "daily"

В файле .env установите:
LOG_CHANNEL=daily

Это заставит Laravel создавать новый лог-файл каждый день (например, laravel-2025-01-01.log).

РЕШЕНИЕ 3: Пакет Log Viewer

Пакет opcodesio/log-viewer предоставляет удобную панель для просмотра логов.

РЕШЕНИЕ 4: Внешние платные инструменты

Сервисы ОТСЛЕЖИВАНИЯ ОШИБОК, которые автоматически собирают и организуют ошибки:
🔹Sentry
🔹Bugsnag
🔹Flare

Сервисы ДЛЯ УПРАВЛЕНИЯ ЛОГАМИ:
🔹Papertrail
🔹Loggly
🔹LogDNA

Есть что-то, что вы бы добавили в этот список?

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥1
Laravel использует Cron\CronExpression для определения времени выполнения запланированных задач.

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

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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🌭1
Пример HTTP-сервера на PHP с использованием файберов. Улучшенная версия

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

👉 Подробнее

➡️ @PHPgx | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
10
This media is not supported in your browser
VIEW IN TELEGRAM
Laravel Wayfinder

На той неделе команда Laravel выпустила новый инструмент — Wayfinder — в бета-версии:
https://github.com/laravel/wayfinder

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

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

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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍144
Теперь PHPUnit по умолчанию использует in-memory SQLite базу данных для тестов

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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍3🔥1
Вы можете сериализовать объекты #php для удобной передачи или хранения.

В этом примере сериализованный объект будет выглядеть так:

"O:6:\"Config\":2:{s:4:\"host\";s:9:\"localhost\";s:4:\"user\";s:4:\"Gary\";}"


👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
7
👩‍💻 Шпаргалка по 12 Git командам

1. git init – инициализация нового Git-репозитория в текущем каталоге.

2. git add – добавление изменений в индекс (staging area).

3. git commit – фиксация проиндексированных изменений с комментарием.

4. git push – отправка локальных изменений в удалённый репозиторий.

5. git pull – получение изменений из удалённого репозитория и их слияние с локальной веткой.

6. git remote – добавление, просмотр или удаление удалённого репозитория.

7. git branch – вывод списка веток, создание новой ветки и переключение на неё.

8. git fetch – загрузка изменений из удалённого репозитория без их слияния.

9. git checkout – переключение на указанную ветку.

10. git merge – слияние указанной ветки с текущей.

11. git status – отображение текущего состояния репозитория и неподтверждённых изменений.

12. git reset – откат текущей ветки до указанного коммита.

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76
Мне нравится эта новая фича в Laravel

Автоматическая жадная загрузка связей в Eloquent-моделях

В своём коде я убрал использование $with и with().

На одной из самых тяжёлых страниц количество запросов было 16.

После применения Model::automaticallyEagerLoadRelationships() оно снизилось до 10.

Круто.

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍6
Интересная вещь про PHP, которую я недавно узнал: что если вы хотите сделать continue в нескольких foreach-циклах?

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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20😁103
Потратил часы на отладку, чтобы тебе не пришлось:

Если колонка в SQL допускает NULL и ты используешь WHERE NOT, обязательно добавь OR IS NULL.

NULL != значение — это не true, это unknown.

Урок, выученный самым тяжёлым способом. 😅

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍163🔥1
Ищете API-клиенты, альтернативы Postman?

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

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

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

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

А каким API-инструментом пользуетесь вы?

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
Привет, разработчики Laravel

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

Но что, если вам нужно запускать эти сидеры внутри тестов?

Не беспокойтесь — базовый тестовый класс Laravel использует трейт InteractsWithDatabase, который предоставляет метод для запуска сидирования данных внутри тестов.

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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4
В Laravel появилась новая функция — мемоизация кэша

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

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

Подробнее в документации: https://laravel.com/docs/12.x/cache#cache-memoization

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84
В новой версии PhpStorm появились крутые обновления:

🟣 Улучшения в настройке Xdebug и WordPress.
🟣 Автодополнение для @phpstan-type и @phpstan-import-type.
🟣 Поддержку вложенных переменных в .env файлах.

…а также множество других полезных функций и улучшений: https://jb.gg/phpstorm-251

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3