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

Связь: @devmangx
Download Telegram
Совет по Laravel: Неявное привязывание Enum = чистые и типобезопасные маршруты

Определите enum на основе строки, используйте его в качестве type hint в определении маршрута — и Laravel автоматически проверит сегменты маршрута, возвращая 404 для недопустимых значений.

Элегантно, просто, мощно ✌️

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132👎2
Совет по Bug Bounty

Утечка страницы PHP Info.

Открытая страница PHP Info может раскрывать множество конфиденциальных данных — от настроек конфигурации до пользовательских сессионных куки.

Например, в сочетании с XSS это может привести к полному захвату учетной записи.

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122😁1
Хардкорная игра-тренажёр для PHP-разработчиков

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

Правило всего одно: нужно переписать функцию так, чтобы она вернула true.

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

👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133
Совет по PHP: First-Class Callables

PHP 8.1 представил first-class callables, которые упрощают синтаксис, особенно при работе с коллекциями Laravel, где часто используются замыкания

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥21
Знали ли вы, что PHP переподключается к Redis при каждом запросе?

В Laravel 12 появилась новая переменная окружения REDIS_PERSISTENT, которая позволяет сохранять соединения с Redis между запросами.

👉 @PHPgx | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Большая актуальная базу бесплатных API, которая обновляется ежедневно

Тут собрано аж 363 бесплатных API на все случаи жизни: от игр и погоды до финансов и здоровья.

Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика

Если API перестает работать или становится платным, он теряет рейтинг и удаляется с сайта

Переходите и смотрите сами: https://www.freepublicapis.com/

👉 @PHPgx | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132🔥2
Совет по 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