Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.33K photos
20 videos
27 files
4.02K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Будьте осторожны при использовании whereYear; даже если ваш столбец проиндексирован, он не будет использован, и база данных выполнит полное сканирование таблицы. Вместо этого лучше использовать диапазоны 🚀.
👍11
«Наконец я попробовал Pest для PHP и Laravel, а затем перешел на него.»

Pest — это современный инструмент для тестирования в PHP, созданный в 2021 году Нуну Мадуро, инженером Laravel. Pest быстро стал популярным благодаря своей интеграции с экосистемой Laravel и упрощению процесса тестирования. Основанный на PHPUnit, Pest сохраняет его мощь, но добавляет более удобный и лаконичный синтаксис.

Основное отличие Pest — это использование замыканий вместо классов для определения тестов. Такой подход делает код компактнее и проще для восприятия. Например, тест, проверяющий истинность условия, в Pest выглядит как одна строка, а не как целый класс, что ускоряет разработку и облегчает чтение кода.

Важной частью успеха Pest стала его привлекательная консоль, которая предоставляет четкий и понятный вывод тестов. Pest также поддерживает большинство возможностей PHPUnit, включая провайдеры данных, хуки (аналог setUp и tearDown), фильтрацию и группировку тестов. Однако Pest пошел дальше, предложив функции, которые делают его уникальным:

🔧 Тестирование архитектуры. Позволяет задавать архитектурные правила для кода, например, обязательное использование строгого режима.
📸 Снапшоты. Удобны для проверки неизменности данных.
🚀 Стресс-тестирование. Полезно для проверки производительности приложений.
🛠️ Плагины. Pest активно поддерживает расширяемость, что позволяет добавлять новые функции через сторонние модули.

Эволюция Pest связана с его глубокой интеграцией в Laravel-сообщество. Многие популярные проекты, такие как Spatie, Livewire и Filament, перешли на Pest, что сделало его стандартом де-факто в экосистеме Laravel. Благодаря обратной совместимости с PHPUnit, переход на Pest не требует кардинального изменения существующих тестов, что облегчает его внедрение.

Таким образом, Pest стал не просто альтернативой PHPUnit, а его современной интерпретацией с улучшенным синтаксисом и расширенными возможностями. Если вы разрабатываете на PHP и еще не пробовали Pest, его простота и мощь делают его достойным внимания инструментом.
👍15😁75🌚1
Привет!

Мы хотели бы поближе с вами познакомиться! Будем очень признательны за ваши ответы на следующие вопросы!
Opis Closure 4.0.0

Этот мажорный релиз представляет собой полную переработку библиотеки и обеспечивает поддержку функций PHP 8.x, таких как атрибуты, перечисления, свойства read-only, именованные параметры и т.д.

#новость
👍3
Что такое OWASP?

OWASP — это акроним, расшифровывающийся как Open Web Application Security Project.

OWASP — это некоммерческая организация, которая занимается исследованием и обеспечением безопасности веб-приложений. Она обладает обширным контентом, включающим методологии, инструменты, стандарты и руководства по обеспечению безопасности веб-приложений.

В рамках OWASP разработаны множество проектов, включающих в себя руководства по безопасности, топ-10 уязвимостей веб-приложений, инструменты для сканирования и тестирования безопасности, образцы кода и многое другое.

Знание OWASP и умение применять его рекомендации является важным для php-разработчика, так как помогает защитить веб-приложения от распространенных уязвимостей, таких как инъекции SQL, межсайтовый скриптинг (XSS), утечка конфиденциальной информации и другие.
👍4🥱4
Эффективный рендеринг изображений Base64 в PDF-файлах Laravel с помощью DomPDF

При создании PDF с помощью библиотеки DomPDF в Laravel часто возникают сложности с обработкой изображений. Основная проблема — высокое потребление памяти, особенно если PDF содержит множество изображений. Вот решение, которое позволяет эффективно встраивать изображения в PDF, минимизируя нагрузку на память.

Проблема
DomPDF требует, чтобы изображения были встроены в HTML в виде base64-строк. Однако загрузка нескольких изображений в память одновременно может быстро превысить лимит, установленный для PHP. Это особенно критично при генерации больших документов, таких как каталоги или отчёты.

Решение
Предложенный подход включает:

🔸Обработку изображений небольшими частями (чтобы избежать переполнения памяти).
🔸Гибкую обработку отсутствующих изображений.
🔸Поддержку как локальных, так и удалённых файлов.
🔸Преобразование изображений в формат base64, совместимый с DomPDF.

Основные элементы решения
1. Управление памятью
Перед началом обработки устанавливается разумный лимит памяти, например, 256 МБ. Это позволяет избежать чрезмерного использования ресурсов сервера, оставаясь в рамках допустимых ограничений.

2. Постепенная загрузка изображений
Вместо того чтобы загружать весь файл в память сразу, изображение читается по частям, например, блоками по 8 КБ. Такой подход предотвращает резкий рост потребления памяти, что особенно полезно для работы с большими изображениями.

3. Обработка отсутствующих изображений
Если файл изображения не найден, вместо ошибки возвращается base64-код прозрачного 1x1 пикселя. Это позволяет избежать сбоев в процессе генерации PDF.
1👍1
Чтобы использовать литеральные символы внутри регекса, можно воспользоваться функцией preg_quote(): она добавляет обратную косую черту перед каждым специальным символом в строке. Не забудьте использовать второй аргумент, который может содержать любой произвольный разделитель.

Другой вариант — использовать внутри регекса символы \Q и \E: они превращают все специальные символы в буквенное значение.
👍9
🔥 Бесплатный курс по фулстек-разработке — реальность

Под Новый год Дед Мороз приносит подарки, а наши подписчики — собственные курсы! Сергей Дмитриев, который занимается коммерческой разработкой уже 15 лет, поделился с нами курсом по созданию веб-сервиса с нуля. В курс входит 141 урок, 28 часов видео, исходный код и чат поддержки для участников.

👉 Подробнее о курсе читайте на Хабре или в телеграм-канале Сергея
🔥5😁2❤‍🔥1
🔄 Как данные перемещаются по сети: шпаргалка по инкапсуляции и деинкапсуляции

👉 Источник
👍7
Первый #дайджест новостей по PHP в этом году:

🔎Обзор года Symfony 2024

🔎PHP 8.4.2 выпущен! — Команда разработчиков PHP объявляет о скорой доступности PHP 8.4.2. Это релиз, исправляющий ошибки. Всем пользователям PHP 8.4 рекомендуется обновиться до этой версии.

🔎Новая площадка Twig Playground — Новый инструмент, который позволяет вам тестировать и экспериментировать с шаблонами Twig в среде песочницы. Он полностью основан на веб-технологиях и не имеет бэкенда.

🔎Новые методы отношений Eloquent в Laravel 11.37 — На прошлой неделе команда Laravel выпустила версию 11.37, в которой появились новые методы Eloquent relation, опция игнорирования регистра в Str::is(), добавление признака Dumpable к экземпляру Uri и многое другое.

🔎Неделя Symfony #940 (30 декабря 2024 — 5 января 2025)
🎉7👍2