«Наконец я попробовал Pest для PHP и Laravel, а затем перешел на него.»
Pest — это современный инструмент для тестирования в PHP, созданный в 2021 году Нуну Мадуро, инженером Laravel. Pest быстро стал популярным благодаря своей интеграции с экосистемой Laravel и упрощению процесса тестирования. Основанный на PHPUnit, Pest сохраняет его мощь, но добавляет более удобный и лаконичный синтаксис.
Основное отличие Pest — это использование замыканий вместо классов для определения тестов. Такой подход делает код компактнее и проще для восприятия. Например, тест, проверяющий истинность условия, в Pest выглядит как одна строка, а не как целый класс, что ускоряет разработку и облегчает чтение кода.
Важной частью успеха Pest стала его привлекательная консоль, которая предоставляет четкий и понятный вывод тестов. Pest также поддерживает большинство возможностей PHPUnit, включая провайдеры данных, хуки (аналог
🔧 Тестирование архитектуры. Позволяет задавать архитектурные правила для кода, например, обязательное использование строгого режима.
📸 Снапшоты. Удобны для проверки неизменности данных.
🚀 Стресс-тестирование. Полезно для проверки производительности приложений.
🛠️ Плагины. Pest активно поддерживает расширяемость, что позволяет добавлять новые функции через сторонние модули.
Эволюция Pest связана с его глубокой интеграцией в Laravel-сообщество. Многие популярные проекты, такие как Spatie, Livewire и Filament, перешли на Pest, что сделало его стандартом де-факто в экосистеме Laravel. Благодаря обратной совместимости с PHPUnit, переход на Pest не требует кардинального изменения существующих тестов, что облегчает его внедрение.
Таким образом, Pest стал не просто альтернативой PHPUnit, а его современной интерпретацией с улучшенным синтаксисом и расширенными возможностями. Если вы разрабатываете на PHP и еще не пробовали Pest, его простота и мощь делают его достойным внимания инструментом.
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😁7❤5🌚1
Ваш возраст
Anonymous Poll
1%
Менее 18 лет
12%
18-24 года
42%
25-34 года
35%
35-44 года
6%
45-54 года
1%
55-64 года
3%
65 лет и старше
🌚1
В какой стране вы живете последние 3 месяца?
Anonymous Poll
59%
Россия
10%
Украина
6%
Беларусь
4%
Казахстан
1%
Польша
1%
Кыргызстан
5%
Узбекистан
1%
США
1%
Грузия
11%
Другое (✏️ напишу в комментариях)
🔥1🌚1👾1
В каком городе вы живёте последние 3 месяца?
Anonymous Poll
15%
Москва
7%
Санкт-Петербург
3%
Екатеринбург
4%
Краснодар
2%
Нижний Новгород
5%
Минск
5%
Киев
1%
Львов
2%
Алматы
57%
Другое (✏️ напишу в комментариях)
🌚3👍1
Какой у вас коммерческий опыт работы в IT?
Anonymous Poll
7%
Нет опыта
6%
До 1 года
15%
1-3 года включительно
27%
3-6 лет включительно
44%
Более 6 лет
🌚1
😁2🌚2
Ваш доход в месяц после вычета налогов
Anonymous Poll
10%
До 500$
8%
От 501$ до 800$
12%
От 801$ до 1100$
23%
От 1101$ до 2000$
19%
От 2001$ до 3000$
12%
От 3001$ до 4000$
6%
От 4001$ до 5000$
3%
От 5001$ до 6000$
7%
От 6001$
🌚1
В какой компании вы работаете?
Anonymous Poll
9%
Стартап
54%
Средний бизнес
26%
Крупная корпорация
10%
Фриланс
🌚2
Какая у вас специализация в IT?
Anonymous Poll
66%
Backend
1%
Frontend
27%
Fullstack
0%
Mobile
0%
Desktop
0%
QA
1%
DevOps/Sysadmin
0%
Data Science
1%
Кибербезопасность
3%
Другое (✏️ напишу в комментариях)
🌚1
Какой грейд у вас на работе?
Anonymous Poll
3%
Стажёр
13%
Джуниор
36%
Миддл
25%
Сеньор
11%
Тимлид
2%
Архитектор
4%
СТО
6%
Я не айтишник
🌚2
Какой контент вас больше привлекает в ТГ-каналах?
Anonymous Poll
39%
Полезные советы и лайфхаки
46%
Обучающие материалы
5%
Развлекательный контент
9%
Новости и аналитика
2%
Истории компаний
🌚3👍1🔥1
Opis Closure 4.0.0
Этот мажорный релиз представляет собой полную переработку библиотеки и обеспечивает поддержку функций PHP 8.x, таких как атрибуты, перечисления, свойства read-only, именованные параметры и т.д.
#новость
Этот мажорный релиз представляет собой полную переработку библиотеки и обеспечивает поддержку функций PHP 8.x, таких как атрибуты, перечисления, свойства read-only, именованные параметры и т.д.
#новость
GitHub
GitHub - opis/closure: Serialize closures, anonymous classes, and arbitrary data
Serialize closures, anonymous classes, and arbitrary data - opis/closure
👍3
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Что такое OWASP?
OWASP — это акроним, расшифровывающийся как Open Web Application Security Project.
OWASP — это некоммерческая организация, которая занимается исследованием и обеспечением безопасности веб-приложений. Она обладает обширным контентом, включающим методологии, инструменты, стандарты и руководства по обеспечению безопасности веб-приложений.
В рамках OWASP разработаны множество проектов, включающих в себя руководства по безопасности, топ-10 уязвимостей веб-приложений, инструменты для сканирования и тестирования безопасности, образцы кода и многое другое.
Знание OWASP и умение применять его рекомендации является важным для php-разработчика, так как помогает защитить веб-приложения от распространенных уязвимостей, таких как инъекции SQL, межсайтовый скриптинг (XSS), утечка конфиденциальной информации и другие.
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.
При создании 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 часов видео, исходный код и чат поддержки для участников.
👉 Подробнее о курсе читайте на Хабре или в телеграм-канале Сергея
Под Новый год Дед Мороз приносит подарки, а наши подписчики — собственные курсы! Сергей Дмитриев, который занимается коммерческой разработкой уже 15 лет, поделился с нами курсом по созданию веб-сервиса с нуля. В курс входит 141 урок, 28 часов видео, исходный код и чат поддержки для участников.
👉 Подробнее о курсе читайте на Хабре или в телеграм-канале Сергея
🔥5😁2❤🔥1
Первый #дайджест новостей по 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, опция игнорирования регистра в
🔎Неделя Symfony #940 (30 декабря 2024 — 5 января 2025)
🔎Обзор года 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
Laravel: Менее известные, но полезные команды Composer
Composer — это основной инструмент для управления зависимостями в PHP. Если вы работаете с Laravel, то наверняка уже знакомы с такими командами, как
1.
Эта команда показывает, какие зависимости вашего проекта устарели. Она выводит список всех пакетов, для которых доступны более новые версии, указывая текущую и последнюю версии. Это удобный способ следить за обновлениями и безопасностью проекта без необходимости сразу обновлять все пакеты.
2.
С помощью этой команды можно получить подробную информацию обо всех установленных пакетах. Кроме того, если указать конкретное имя пакета, можно узнать его описание, текущую версию и зависимости. Например:
Эта команда полезна, когда нужно быстро проверить, какая версия пакета установлена и для чего он нужен.
3.
Если вы хотите понять, почему определённый пакет установлен в проекте, используйте команду
4.
Для проверки лицензий всех установленных зависимостей существует команда
5.
При работе на разных платформах может возникнуть необходимость убедиться, что все необходимые расширения PHP установлены. Команда composer
Composer — это основной инструмент для управления зависимостями в PHP. Если вы работаете с Laravel, то наверняка уже знакомы с такими командами, как
composer install
и composer update
. Однако у Composer есть менее известные, но очень полезные команды, которые могут значительно упростить вашу работу над проектом.1.
composer outdated
Эта команда показывает, какие зависимости вашего проекта устарели. Она выводит список всех пакетов, для которых доступны более новые версии, указывая текущую и последнюю версии. Это удобный способ следить за обновлениями и безопасностью проекта без необходимости сразу обновлять все пакеты.
2.
composer show
С помощью этой команды можно получить подробную информацию обо всех установленных пакетах. Кроме того, если указать конкретное имя пакета, можно узнать его описание, текущую версию и зависимости. Например:
composer show backpack/crud
Эта команда полезна, когда нужно быстро проверить, какая версия пакета установлена и для чего он нужен.
3.
composer why
Если вы хотите понять, почему определённый пакет установлен в проекте, используйте команду
composer why
. Она покажет, какие зависимости требуют установки данного пакета. Это особенно полезно для анализа сложной цепочки зависимостей.4.
composer licenses
Для проверки лицензий всех установленных зависимостей существует команда
composer licenses
. Она помогает убедиться, что все используемые пакеты соответствуют необходимым требованиям по лицензированию, что особенно важно при работе с открытым исходным кодом.5.
composer check-platform-reqs
При работе на разных платформах может возникнуть необходимость убедиться, что все необходимые расширения PHP установлены. Команда composer
check-platform-reqs
проверяет, соответствует ли ваша система требованиям, указанным в composer.json
. Она также проверяет версию PHP и расширения.👍19😁4🥱1