Buggregator — удобная отладка
Buggregator — это идеальный инструмент отладки, который работает как сервер VarDumper, профилировщик Xhprof, локальный SMTP-сервер, локальный Sentry и многое другое.
Ознакомьтесь с постом Павла Бучнева о профилировании PHP (Laravel) приложений с помощью xhprof.
Библиотека пхпшника #инструменты
Buggregator — это идеальный инструмент отладки, который работает как сервер VarDumper, профилировщик Xhprof, локальный SMTP-сервер, локальный Sentry и многое другое.
Ознакомьтесь с постом Павла Бучнева о профилировании PHP (Laravel) приложений с помощью xhprof.
Библиотека пхпшника #инструменты
💻 Подборка новостей по PHP за неделю:
🔎 Laravel 12.4: Поддержка конвейеров в построителе запросов
Команда Laravel выпустила версию 12.4.0, которая включает метод
🔎 Eloquent: Приведение строк к HTML в Laravel 12.4
Начиная с версии 12.4, в Laravel можно автоматически приводить атрибуты Eloquent к HTML-строкам с помощью кастомного класса AsHtmlString. Это позволяет безопасно работать с HTML-содержимым в моделях.
🔎 Релизы Symfony 6.4.20 и 7.2.5
Symfony объявил о выходе версий 6.4.20 и 7.2.5, содержащих важные исправления и улучшения. Рекомендуется обновиться до этих версий для обеспечения стабильности и безопасности приложений.
🔎 Неделя Symfony #952 (24–30 марта 2025 года)
Библиотека пхпшника #свежак
🔎 Laravel 12.4: Поддержка конвейеров в построителе запросов
Команда Laravel выпустила версию 12.4.0, которая включает метод
pipe()
для построителя запросов, возможность условного пропуска миграций, метод Arr::sole()
и другие улучшения. 🔎 Eloquent: Приведение строк к HTML в Laravel 12.4
Начиная с версии 12.4, в Laravel можно автоматически приводить атрибуты Eloquent к HTML-строкам с помощью кастомного класса AsHtmlString. Это позволяет безопасно работать с HTML-содержимым в моделях.
🔎 Релизы Symfony 6.4.20 и 7.2.5
Symfony объявил о выходе версий 6.4.20 и 7.2.5, содержащих важные исправления и улучшения. Рекомендуется обновиться до этих версий для обеспечения стабильности и безопасности приложений.
🔎 Неделя Symfony #952 (24–30 марта 2025 года)
Библиотека пхпшника #свежак
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Как использовать принцип инверсии управления в Laravel?
Принцип инверсии управления (Inversion of Control, IoC) в Laravel реализуется с помощью сервис-контейнера, который управляет зависимостями между классами и их внедрением. Это позволяет создавать гибкую и тестируемую архитектуру приложений.
В нашем примере:
Определяется интерфейс
Класс
Класс
В сервис-контейнере Laravel регистрируется связь между
Создание экземпляра
Использование IoC в Laravel позволяет:
🔸 Разделить ответственность между классами, делая их более независимыми и удобными для тестирования.
🔸 Легко заменять реализации зависимостей, например, для использования другого платежного шлюза, достаточно зарегистрировать новую реализацию в контейнере.
🔸 Упрощает тестирование, позволяя подменять реальные реализации зависимостей на заглушки или моки.
Принцип инверсии управления (Inversion of Control, IoC) в Laravel реализуется с помощью сервис-контейнера, который управляет зависимостями между классами и их внедрением. Это позволяет создавать гибкую и тестируемую архитектуру приложений.
В нашем примере:
Определяется интерфейс
PaymentGatewayInterface
с методом charge
, который должен быть реализован любым платежным шлюзом.Класс
StripePaymentGateway
реализует этот интерфейс, предоставляя конкретную логику для обработки платежей через Stripe.Класс
OrderProcessor
зависит от PaymentGatewayInterface
. Вместо создания экземпляра конкретного платежного шлюза внутри себя, он получает его через конструктор, что соответствует принципу инверсии управления.В сервис-контейнере Laravel регистрируется связь между
PaymentGatewayInterface
и его реализацией StripePaymentGateway
с помощью метода $app->bind()
.Создание экземпляра
OrderProcessor
осуществляется через сервис-контейнер с помощью метода $app->make()
, который автоматически внедрит необходимые зависимости.Использование IoC в Laravel позволяет:
🔸 Разделить ответственность между классами, делая их более независимыми и удобными для тестирования.
🔸 Легко заменять реализации зависимостей, например, для использования другого платежного шлюза, достаточно зарегистрировать новую реализацию в контейнере.
🔸 Упрощает тестирование, позволяя подменять реальные реализации зависимостей на заглушки или моки.
PHP под капотом: как работает генерация случайных чисел
Вы когда-нибудь задумывались, как компьютер, эта идеальная детерминированная машина, выполняющая команды с математической точностью, умудряется генерировать «случайные» числа? Ведь в его цифровом мире нет места настоящему хаосу — только чёткие алгоритмы и предсказуемые состояния.
Сегодня мы заглянем под капот PHP и разберёмся, как устроена эта иллюзия случайности!
🔗 Хабр
Вы когда-нибудь задумывались, как компьютер, эта идеальная детерминированная машина, выполняющая команды с математической точностью, умудряется генерировать «случайные» числа? Ведь в его цифровом мире нет места настоящему хаосу — только чёткие алгоритмы и предсказуемые состояния.
Сегодня мы заглянем под капот PHP и разберёмся, как устроена эта иллюзия случайности!
🔗 Хабр
Метод «skip» у планировщика
Иногда вы можете захотеть пропустить выполнение команды, основываясь на определенном условии. Laravel включает метод «
Библиотека пхпшника #буст
Иногда вы можете захотеть пропустить выполнение команды, основываясь на определенном условии. Laravel включает метод «
skip
» для выполнения этого 🚀Библиотека пхпшника #буст
Forwarded from hahacker news
📚🔄 OTUS – лауреат премии «Цифровые вершины»: как подписка на обучение меняет IT-образование
Платформа OTUS представила инновационный подход к IT-обучению, запустив сервис подписки, предоставляющий доступ к 151 курсу по ключевым направлениям индустрии. Этот формат позволяет специалистам гибко выбирать образовательные треки и проходить до трех курсов одновременно без дополнительных затрат, что значительно снижает расходы на обучение.
В 2025 году OTUS была удостоена премии «Цифровые вершины» в номинации «Лучшее IT-решение для образования», что подтверждает эффективность и востребованность их модели обучения. Благодаря подписке, IT-специалисты могут непрерывно обновлять свои знания и навыки, оставаясь конкурентоспособными в стремительно развивающейся сфере.
🔗 Подробности в статье
Платформа OTUS представила инновационный подход к IT-обучению, запустив сервис подписки, предоставляющий доступ к 151 курсу по ключевым направлениям индустрии. Этот формат позволяет специалистам гибко выбирать образовательные треки и проходить до трех курсов одновременно без дополнительных затрат, что значительно снижает расходы на обучение.
В 2025 году OTUS была удостоена премии «Цифровые вершины» в номинации «Лучшее IT-решение для образования», что подтверждает эффективность и востребованность их модели обучения. Благодаря подписке, IT-специалисты могут непрерывно обновлять свои знания и навыки, оставаясь конкурентоспособными в стремительно развивающейся сфере.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пхпшники!
Проголосуйте за наш канал, и в сторис мы опубликуем топ материалов, которые должен прочитать каждый пхпшник.
➡️ Поддержать канал: https://www.tgoop.com/boost/phpproglib
Проголосуйте за наш канал, и в сторис мы опубликуем топ материалов, которые должен прочитать каждый пхпшник.
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Hypervel — новый фреймворк PHP с нативной поддержкой корутин
Если вам нравится Laravel, но не хватает производительности в I/O-нагруженных проектах — знакомьтесь с Hypervel. Это высокопроизводительный PHP-фреймворк, вдохновлённый Laravel, но построенный на Swoole и с полной поддержкой корутин прямо из коробки.
🤔 Зачем Hypervel, если есть Laravel Octane?
Octane — это круто, он ускоряет Laravel за счёт долгоживущего процесса. Но вот беда: Octane не умеет в неблокирующий I/O.
Допустим, у вас чат-бот на Laravel, и каждый запрос к ИИ занимает 3–5 секунд. Даже с 10 worker-ами ты не обработаешь 100 параллельных запросов — они просто встанут в очередь. Почему? Потому что все воркеры блокируются на время I/O-операций.
Laravel по своей архитектуре не рассчитан на корутины. И в ближайшем будущем это не изменится.
⚡️ Что умеет Hypervel?
✅ Почти полная совместимость с Laravel API
✅ Корутины — из коробки
✅ QPS в 10+ раз выше Octane (в I/O-нагрузке — в 100+ раз)
✅ Поддержка object/connection pool (DB, Redis, HTTP и др.)
✅ Корутинная обработка очередей и cron-задач
✅ Кеши, очереди, блокировки — совместимы с Laravel
✅ Подходит для микросервисов, API-шлюзов, высоконагруженных систем
🧵 Корутины — главная фишка
Корутина — это как функция, которая может «поставиться на паузу», пока идёт I/O (запрос к БД, файл, сеть), и не блокировать весь процесс. Hypervel использует Swoole, где всё работает на корутинах: HTTP, DB, Redis, файлы и даже стандартные функции PHP.
💡 Один процесс в Hypervel может обрабатывать сотни задач параллельно — без запуска 100+ воркеров.
📊 Бенчмарки
Hello World (без I/O): Hypervel в 10 раз быстрее Octane
Симуляция I/O (sleep 1 сек): Hypervel в сотни раз быстрее
👉 Читать статью
Если вам нравится Laravel, но не хватает производительности в I/O-нагруженных проектах — знакомьтесь с Hypervel. Это высокопроизводительный PHP-фреймворк, вдохновлённый Laravel, но построенный на Swoole и с полной поддержкой корутин прямо из коробки.
🤔 Зачем Hypervel, если есть Laravel Octane?
Octane — это круто, он ускоряет Laravel за счёт долгоживущего процесса. Но вот беда: Octane не умеет в неблокирующий I/O.
Допустим, у вас чат-бот на Laravel, и каждый запрос к ИИ занимает 3–5 секунд. Даже с 10 worker-ами ты не обработаешь 100 параллельных запросов — они просто встанут в очередь. Почему? Потому что все воркеры блокируются на время I/O-операций.
Laravel по своей архитектуре не рассчитан на корутины. И в ближайшем будущем это не изменится.
⚡️ Что умеет Hypervel?
✅ Почти полная совместимость с Laravel API
✅ Корутины — из коробки
✅ QPS в 10+ раз выше Octane (в I/O-нагрузке — в 100+ раз)
✅ Поддержка object/connection pool (DB, Redis, HTTP и др.)
✅ Корутинная обработка очередей и cron-задач
✅ Кеши, очереди, блокировки — совместимы с Laravel
✅ Подходит для микросервисов, API-шлюзов, высоконагруженных систем
🧵 Корутины — главная фишка
Корутина — это как функция, которая может «поставиться на паузу», пока идёт I/O (запрос к БД, файл, сеть), и не блокировать весь процесс. Hypervel использует Swoole, где всё работает на корутинах: HTTP, DB, Redis, файлы и даже стандартные функции PHP.
💡 Один процесс в Hypervel может обрабатывать сотни задач параллельно — без запуска 100+ воркеров.
📊 Бенчмарки
Hello World (без I/O): Hypervel в 10 раз быстрее Octane
Симуляция I/O (sleep 1 сек): Hypervel в сотни раз быстрее
👉 Читать статью
🔧 CLI-лайфхак для PHP-разработчиков: Быстрое выполнение одноразовых команд с помощью опции -r 🚀
Полезная команда, которая позволяет выполнять небольшие фрагменты PHP-кода прямо из командной строки без создания отдельных файлов. Это особенно удобно для быстрого тестирования идей или выполнения одноразовых задач 🖥️
Как это сделать?
1. Откройте терминал на вашем компьютере.
2 Введите следующую команду, заменив код внутри одинарных кавычек на нужный вам PHP-код:
Почему это удобно?
🔸 Быстрота: нет необходимости создавать отдельный файл для выполнения небольшого фрагмента кода.
🔸 Удобство: идеальный способ для тестирования небольших функций или выражений.
🔸 Гибкость: позволяет комбинировать PHP с другими командными инструментами для автоматизации задач.
Обратите внимание:
Экранирование кавычек: при использовании одинарных кавычек внутри PHP-кода их необходимо экранировать обратным слэшем (\'), чтобы избежать конфликтов с внешними кавычками.
Библиотека пхпшника #буст
Полезная команда, которая позволяет выполнять небольшие фрагменты PHP-кода прямо из командной строки без создания отдельных файлов. Это особенно удобно для быстрого тестирования идей или выполнения одноразовых задач 🖥️
Как это сделать?
1. Откройте терминал на вашем компьютере.
2 Введите следующую команду, заменив код внутри одинарных кавычек на нужный вам PHP-код:
php -r 'echo «Привет, мир!\n»;'
Почему это удобно?
🔸 Быстрота: нет необходимости создавать отдельный файл для выполнения небольшого фрагмента кода.
🔸 Удобство: идеальный способ для тестирования небольших функций или выражений.
🔸 Гибкость: позволяет комбинировать PHP с другими командными инструментами для автоматизации задач.
Обратите внимание:
Экранирование кавычек: при использовании одинарных кавычек внутри PHP-кода их необходимо экранировать обратным слэшем (\'), чтобы избежать конфликтов с внешними кавычками.
php -r 'echo \'Это строка с одинарными кавычками.\' . «\n»;'
Библиотека пхпшника #буст
📣 Программисты, нужен ваш совет
Пилим крутую подборку ноутов для кодеров в 2025-м и хотим собрать реальный фидбек от тех, кто в теме!
Какой ноут спасает вас в кодинге и почему?
Расскажите все:
🔹 Что за зверь (модель, начинка)
🔹 Где жмет и где радует в ежедневной работе
🔹 На какие фишки смотреть при выборе
🔹 Как вам с ним живется
Топовые советы попадут в нашу статью. Сделаем годный гайд, который реально поможет коллегам.
💬 Делитесь в комментах
Пилим крутую подборку ноутов для кодеров в 2025-м и хотим собрать реальный фидбек от тех, кто в теме!
Какой ноут спасает вас в кодинге и почему?
Расскажите все:
🔹 Что за зверь (модель, начинка)
🔹 Где жмет и где радует в ежедневной работе
🔹 На какие фишки смотреть при выборе
🔹 Как вам с ним живется
Топовые советы попадут в нашу статью. Сделаем годный гайд, который реально поможет коллегам.
💬 Делитесь в комментах
🔥 Ускоряем тесты с ParaTest
Если вы часто сталкиваетесь с медленными тестами и хоите ускорить процесс разработки, стоит попробовать ParaTest. Этот инструмент позволяет запускать тесты параллельно, что значительно сокращает время выполнения, особенно на больших проектах.
Почему стоит использовать ParaTest:
🔸 Параллельное выполнение: тесты запускаются в несколько процессов одновременно, что ускоряет их выполнение.
🔸 Преимущества для CI: особенно полезно для непрерывной интеграции — тесты запускаются быстрее, что ускоряет релизы.
🔸 Простая установка: ParaTest можно интегрировать почти как замену PHPUnit без серьезных изменений в коде.
Какие проблемы могут возникнуть:
При параллельном запуске могут возникнуть ошибки, связанные с одновременным доступом к базе данных (например, при попытке создать одинаковые таблицы). Для этого нужно изменить конфигурацию тестов, чтобы каждый тест использовал транзакции или запускал миграции до начала тестов.
Как решить:
🔹 Используй
🔹 В случае с SQLite можно оставить стандартные настройки, так как каждая база будет независимой.
Результат:
После настройки ParaTest ты можешь увидеть ускорение в 2-10 раз, особенно на крупных проектах. Это заметно сокращает время, которое тратится на тестирование, и помогает быстрее доставлять код в продакшн.
💡 Совет: если проект большой, начинай с разделения тестов на группы и постепенно переводя их на параллельное выполнение, чтобы получать результат сразу.
🔗 Читать Статью
Библиотека пхпшника
Если вы часто сталкиваетесь с медленными тестами и хоите ускорить процесс разработки, стоит попробовать ParaTest. Этот инструмент позволяет запускать тесты параллельно, что значительно сокращает время выполнения, особенно на больших проектах.
Почему стоит использовать ParaTest:
🔸 Параллельное выполнение: тесты запускаются в несколько процессов одновременно, что ускоряет их выполнение.
🔸 Преимущества для CI: особенно полезно для непрерывной интеграции — тесты запускаются быстрее, что ускоряет релизы.
🔸 Простая установка: ParaTest можно интегрировать почти как замену PHPUnit без серьезных изменений в коде.
Какие проблемы могут возникнуть:
При параллельном запуске могут возникнуть ошибки, связанные с одновременным доступом к базе данных (например, при попытке создать одинаковые таблицы). Для этого нужно изменить конфигурацию тестов, чтобы каждый тест использовал транзакции или запускал миграции до начала тестов.
Как решить:
🔹 Используй
DatabaseTransactions
вместо RefreshDatabase
для предотвращения конфликтов в базе данных при параллельном запуске.🔹 В случае с SQLite можно оставить стандартные настройки, так как каждая база будет независимой.
Результат:
После настройки ParaTest ты можешь увидеть ускорение в 2-10 раз, особенно на крупных проектах. Это заметно сокращает время, которое тратится на тестирование, и помогает быстрее доставлять код в продакшн.
💡 Совет: если проект большой, начинай с разделения тестов на группы и постепенно переводя их на параллельное выполнение, чтобы получать результат сразу.
🔗 Читать Статью
Библиотека пхпшника
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
В каждой команде бывают специалисты, чья ценность не укладывается в привычные метрики продуктивности. Они редко в топе по количеству закрытых задач, но именно их вклад критически важен для общего результата.
Такие люди помогают менее опытным коллегам разобраться в сложных вопросах, улучшают архитектуру и процессы незаметными правками, предотвращают ошибки ещё до того, как они стали задачами, создают культуру качества, которую не видно в отчётах.
Иногда стоит пересмотреть, как мы оцениваем эффективность. Потому что не все цифры отражают суть.
Please open Telegram to view this post
VIEW IN TELEGRAM