PHP: 8 уровней логов
Большинство фреймворков и пакетов следуют стандарту PSR-3, который описывает, как работает система ведения логов. Это интерфейс, на который вы должны опираться при отправке логов в систему. В PHP чаще всего используют имплементацию Monolog, как очень гибкий и простой в понимании.
Реализация PSR-3 описывает 8 уровней логов. В порядке убывания «строгости»: Emergency, Alert, Critical, Error, Warning, Notice, Info и Debug. Попытка решить, какой из них выбрать, иногда сбивает с толку. Здесь рассказывается об этом подробно.
Большинство фреймворков и пакетов следуют стандарту PSR-3, который описывает, как работает система ведения логов. Это интерфейс, на который вы должны опираться при отправке логов в систему. В PHP чаще всего используют имплементацию Monolog, как очень гибкий и простой в понимании.
Реализация PSR-3 описывает 8 уровней логов. В порядке убывания «строгости»: Emergency, Alert, Critical, Error, Warning, Notice, Info и Debug. Попытка решить, какой из них выбрать, иногда сбивает с толку. Здесь рассказывается об этом подробно.
Хабр
PHP: 8 уровней логов
В реальности, скорее всего, вы будете использовать четыре. Каждый раз, когда мне приходится создавать приложение, есть вещи, которые я хочу занести в лог по разным причинам: отладка, статистика,...
👍5
💬 Удается ли вам отдыхать вне работы?
👍 — да, почти всегда
🙏 — да, иногда
🤔 — нет, всегда работа в голове
🥱 — какой отдых? Я же айтишник
#холивар
👍 — да, почти всегда
🙏 — да, иногда
🤔 — нет, всегда работа в голове
🥱 — какой отдых? Я же айтишник
#холивар
🥱62👍47🙏32🤔13❤2
Flexhub — хранилище приватных рецептов symfony/flex
Self-hosted решение для управления приватными рецептами symfony/flex. Flex-рецепты позволяют автоматизировать установку и конфигурацию Symfony-бандлов.
Приложение создано с использованием PHP 8.2 + Symfony 6.4 и TypeScript + Vue 3.
Поставляется в виде Docker-образа, который упращает развертывание сервера рецептов в своей инфраструктуре.
Self-hosted решение для управления приватными рецептами symfony/flex. Flex-рецепты позволяют автоматизировать установку и конфигурацию Symfony-бандлов.
Приложение создано с использованием PHP 8.2 + Symfony 6.4 и TypeScript + Vue 3.
Поставляется в виде Docker-образа, который упращает развертывание сервера рецептов в своей инфраструктуре.
GitHub
GitHub - sonnymilton/flexhub: Server for private Symfony Flex recipes
Server for private Symfony Flex recipes. Contribute to sonnymilton/flexhub development by creating an account on GitHub.
👍3
Еще один #дайджест новостей по PHP за неделю:
🔎Сборки NativePHP для Windows уже здесь — Была объявлена поддержка NativePHP для Windows, а это значит, что теперь вы можете создавать приложения для платформы Windows.
🔎Выпущен Symfony 7.1.0-BETA1 — Только что состоялся релиз Symfony 7.1.0-BETA1. Вот список наиболее важных изменений с версии 7.0.
🔎Выпущен CakePHP 5.0.8 — Улучшения включают: Улучшена совместимость с искателями 4.x. Журналы ошибок, возникающих при откате в WebExceptionRenderer, теперь включают трассировку стека, что упрощает отладку + многое другое.
🔎Выпущены PHP 8.3.7 и PHP 8.2.19!
🔎Rule::array() и whereJsonOverlaps() для MySQL в Laravel 11.7 — На этой неделе команда Laravel выпустила версию 11.7, в которой появились метод валидации Rule::array(), метод whereJsonOverlaps() для MySQL, провайдер Slack OpenID для Laravel Socialite и многое другое.
🔎Неделя Symfony #906 (6-12 мая 2024 г.)
🔎Сборки NativePHP для Windows уже здесь — Была объявлена поддержка NativePHP для Windows, а это значит, что теперь вы можете создавать приложения для платформы Windows.
🔎Выпущен Symfony 7.1.0-BETA1 — Только что состоялся релиз Symfony 7.1.0-BETA1. Вот список наиболее важных изменений с версии 7.0.
🔎Выпущен CakePHP 5.0.8 — Улучшения включают: Улучшена совместимость с искателями 4.x. Журналы ошибок, возникающих при откате в WebExceptionRenderer, теперь включают трассировку стека, что упрощает отладку + многое другое.
🔎Выпущены PHP 8.3.7 и PHP 8.2.19!
🔎Rule::array() и whereJsonOverlaps() для MySQL в Laravel 11.7 — На этой неделе команда Laravel выпустила версию 11.7, в которой появились метод валидации Rule::array(), метод whereJsonOverlaps() для MySQL, провайдер Slack OpenID для Laravel Socialite и многое другое.
🔎Неделя Symfony #906 (6-12 мая 2024 г.)
👍3🎉1
Автоматизация Laravel CI/CD с помощью GitHub Actions на Namecheap
Здесь рассматривается автоматизация процессов непрерывной интеграции и развертывания (CI/CD) для приложений на Laravel с использованием GitHub Actions на платформе Namecheap.
Здесь рассматривается автоматизация процессов непрерывной интеграции и развертывания (CI/CD) для приложений на Laravel с использованием GitHub Actions на платформе Namecheap.
DEV Community
Automating Laravel CI/CD with GitHub Actions on Namecheap
Who is this article for? Have you had some struggles hosting your Laravel application on namecheap?...
❤🔥5🤔2
PHP c 2014 по 2024
В видео обсуждается, как за последние десять лет PHP стал более мощным и функциональным.
В видео обсуждается, как за последние десять лет PHP стал более мощным и функциональным.
YouTube
PHP from 2014 to 2024
PHP has come a long way, let's highlight some of the most impactful features.
Check out my channel for more videos about awesome PHP! https://www.youtube.com/@phpannotated
If you want to learn more about how PHP has evolved, check out my blog series about…
Check out my channel for more videos about awesome PHP! https://www.youtube.com/@phpannotated
If you want to learn more about how PHP has evolved, check out my blog series about…
🔥11🥱2👍1
php-vips
Очень быстрый пакет для работы с изображениями, который в ~5 раз быстрее Imagick или GD и потребляет меньше памяти. Это хороший пример FFI.
Очень быстрый пакет для работы с изображениями, который в ~5 раз быстрее Imagick или GD и потребляет меньше памяти. Это хороший пример FFI.
GitHub
GitHub - libvips/php-vips: php binding for libvips
php binding for libvips. Contribute to libvips/php-vips development by creating an account on GitHub.
👍23❤1
Какова разница между веб-маршрутами и API-маршрутами в Laravel?
В Laravel и веб-маршруты, и API-маршруты служат точками входа для обработки входящих запросов, но обычно они используются для разных целей.
Веб-маршруты:
✔️Веб-маршруты в Laravel в основном используются для обслуживания HTML-представлений и обработки веб-запросов от браузеров.
✔️Они отвечают за отображение веб-страниц, обработку отправленных форм и управление сеансами.
✔️Веб-маршруты определяются по умолчанию в файле routes/web.php.
✔️Они часто включают взаимодействие с пользовательским интерфейсом, такое как отображение форм, представлений и обработка аутентификации пользователей.
API-маршруты:
✔️API-маршруты, напротив, предназначены для обработки запросов и ответов для точек входа API.
✔️Они обычно используются для создания RESTful API или предоставления данных для мобильных приложений, одностраничных приложений (SPA) или других служб.
✔️API-маршруты определяются по умолчанию в файле routes/api.php.
✔️Они обычно возвращают данные в формате JSON или XML, а не отображают HTML-представления.
✔️API-маршруты часто включают операции CRUD (Create, Read, Update, Delete) с ресурсами, такие как извлечение данных из базы данных, создание новых записей, обновление существующих записей или удаление записей.
Таким образом, веб-маршруты используются для обслуживания веб-страниц и обработки запросов браузера, в то время как API-маршруты используются для предоставления данных и взаимодействия с приложениями или службами программным способом.
#вопросы_с_собеседований
В Laravel и веб-маршруты, и API-маршруты служат точками входа для обработки входящих запросов, но обычно они используются для разных целей.
Веб-маршруты:
✔️Веб-маршруты в Laravel в основном используются для обслуживания HTML-представлений и обработки веб-запросов от браузеров.
✔️Они отвечают за отображение веб-страниц, обработку отправленных форм и управление сеансами.
✔️Веб-маршруты определяются по умолчанию в файле routes/web.php.
✔️Они часто включают взаимодействие с пользовательским интерфейсом, такое как отображение форм, представлений и обработка аутентификации пользователей.
API-маршруты:
✔️API-маршруты, напротив, предназначены для обработки запросов и ответов для точек входа API.
✔️Они обычно используются для создания RESTful API или предоставления данных для мобильных приложений, одностраничных приложений (SPA) или других служб.
✔️API-маршруты определяются по умолчанию в файле routes/api.php.
✔️Они обычно возвращают данные в формате JSON или XML, а не отображают HTML-представления.
✔️API-маршруты часто включают операции CRUD (Create, Read, Update, Delete) с ресурсами, такие как извлечение данных из базы данных, создание новых записей, обновление существующих записей или удаление записей.
Таким образом, веб-маршруты используются для обслуживания веб-страниц и обработки запросов браузера, в то время как API-маршруты используются для предоставления данных и взаимодействия с приложениями или службами программным способом.
#вопросы_с_собеседований
👍12🥱10🌚2
Оптимизируйте свои запросы Eloquent с помощью ИИ
Пакет Laravel Slower предоставляет команды для анализа и очистки старых записей в зависимости от конфигурации планировщика приложения. Рекомендации, созданные с помощью команды slower:analyze, сохраняются в таблице базы данных, созданной этим пакетом, и могут быть просмотрены после завершения анализа ИИ.
Основные особенности пакета включают:
- Настройку порога медленности запросов.
- Использование конфигурируемых моделей ИИ, таких как GPT-4, для анализа.
- Возможность отключения анализа медленных запросов.
- Настройку подсказок для ИИ.
В качестве примера в статье, пакет может предложить добавление комбинированного (составного) индекса на столбцы product_id, price и discount_total для ускорения выполнения запроса
Пакет Laravel Slower предоставляет команды для анализа и очистки старых записей в зависимости от конфигурации планировщика приложения. Рекомендации, созданные с помощью команды slower:analyze, сохраняются в таблице базы данных, созданной этим пакетом, и могут быть просмотрены после завершения анализа ИИ.
Основные особенности пакета включают:
- Настройку порога медленности запросов.
- Использование конфигурируемых моделей ИИ, таких как GPT-4, для анализа.
- Возможность отключения анализа медленных запросов.
- Настройку подсказок для ИИ.
В качестве примера в статье, пакет может предложить добавление комбинированного (составного) индекса на столбцы product_id, price и discount_total для ускорения выполнения запроса
Laravel News
Optimize Your Eloquent Queries with AI - Laravel News
The Laravel Slower package identifies slow queries and suggests optimizations such as indexing and other improvements.
🥱6👏1
📣 Используйте through вместо map в Laravel, когда используете пагинацию. Когда вы хотите отобразить данные из пагинации и вернуть только подмножество полей, используйте through вместо map.
map разрушает объект пагинации и изменяет его идентификатор. В то время как through работает с самими пагинационными данными.
map разрушает объект пагинации и изменяет его идентификатор. В то время как through работает с самими пагинационными данными.
👏17👍7❤3👾1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤1
Как проверить емейл в PHP: regex, filter_var() и API
Существует три способа проверки емейл адреса:
Функция filter_var(): Эта встроенная функция проста и эффективна для базовой проверки, обеспечивая правильность формата электронной почты.
Регулярные выражения (Regex): Предлагают настраиваемую проверку путем определения определенных шаблонов, но требуют тщательной проработки для обработки всех допустимых форматов электронной почты.
API: Эти службы обеспечивают расширенную проверку, проверяя не только формат, но и существование и возможность доставки адреса электронной почты.
У каждого метода есть свои преимущества и варианты использования в зависимости от требуемого уровня проверки.
Подробные объяснения и примеры кода читайте в полной версии статьи здесь.
Существует три способа проверки емейл адреса:
Функция filter_var(): Эта встроенная функция проста и эффективна для базовой проверки, обеспечивая правильность формата электронной почты.
Регулярные выражения (Regex): Предлагают настраиваемую проверку путем определения определенных шаблонов, но требуют тщательной проработки для обработки всех допустимых форматов электронной почты.
API: Эти службы обеспечивают расширенную проверку, проверяя не только формат, но и существование и возможность доставки адреса электронной почты.
У каждого метода есть свои преимущества и варианты использования в зависимости от требуемого уровня проверки.
Подробные объяснения и примеры кода читайте в полной версии статьи здесь.
DEV Community
How to Validate Emails in PHP: regex, filter_var(), and API Explained
Be it marketing or transactional emails, email address validation is a necessity, or you could risk...
❤6👍2👾2
💬 Что вас мотивирует в работе?
❤️ — развитие своих профессиональных скиллов
👍 — преимущественно деньги
🤔 — я просто не хочу умереть с голоду
🌚 — одобрение коллег, поддержка определённого статуса
👾 — я верю, что занимаюсь чем-то полезным и ценным
#интерактив
❤️ — развитие своих профессиональных скиллов
👍 — преимущественно деньги
🤔 — я просто не хочу умереть с голоду
🌚 — одобрение коллег, поддержка определённого статуса
👾 — я верю, что занимаюсь чем-то полезным и ценным
#интерактив
👍98❤44🤔31👾24🌚5
CSV Blueprint
Строгая и автоматизированная построчная проверка CSV на основе настраиваемых схем Yaml.
За считанные секунды вы можете убедиться, что каждый символ в гигабайтном файле соответствует вашим ожиданиям.
Строгая и автоматизированная построчная проверка CSV на основе настраиваемых схем Yaml.
За считанные секунды вы можете убедиться, что каждый символ в гигабайтном файле соответствует вашим ожиданиям.
GitHub
GitHub - JBZoo/CSV-Blueprint: CSV Validator - Strict and automated line-by-line CSV checking tool based on customizable Yaml schemas
CSV Validator - Strict and automated line-by-line CSV checking tool based on customizable Yaml schemas - JBZoo/CSV-Blueprint
👍4
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии PHP разработчиков уровня Junior
▪️Веб-разработчик
Тула. ИнтерЛабс — маркетинговое агентство полного цикла
Подробнее
▪️PHP-разработчик
Волгоград. ИНТЕРВОЛГА — веб-разработка, маркетинг, сопровождение нагруженных проектов
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️Backend разработчик
Набережные Челны. PROFFIT GO — разработка ПО
Подробнее
▪️PHP Laravel разработчик
Удаленка. Офис в Казани. Акцент на результат — маркетинговое агентство
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Программист Full Stack
Удаленка. Офис в Москве. Астони — сопровождение и SEO-продвижение сайтов
Подробнее
▪️Fullstack разработчик
Удаленка. Офис в Екатеринбурге. amgroup — разработка ПО
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️Веб-разработчик
Тула. ИнтерЛабс — маркетинговое агентство полного цикла
Подробнее
▪️PHP-разработчик
Волгоград. ИНТЕРВОЛГА — веб-разработка, маркетинг, сопровождение нагруженных проектов
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️Backend разработчик
Набережные Челны. PROFFIT GO — разработка ПО
Подробнее
▪️PHP Laravel разработчик
Удаленка. Офис в Казани. Акцент на результат — маркетинговое агентство
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Программист Full Stack
Удаленка. Офис в Москве. Астони — сопровождение и SEO-продвижение сайтов
Подробнее
▪️Fullstack разработчик
Удаленка. Офис в Екатеринбурге. amgroup — разработка ПО
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
tula.hh.ru
Вакансия Веб-разработчик (junior) в Туле, работа в компании ИнтерЛабс (вакансия в архиве c 12 июня 2024)
Зарплата: от 50000 ₽ за месяц. Тула. Требуемый опыт: не требуется. Полная занятость. Дата публикации: 09.06.2024.
😁9❤2👍2
Symfony — это фреймворк, основанный на конфигурации или соглашениях?
Symfony — это фреймворк, основанный на соглашениях. Документ Coding Standards иллюстрирует нормы кодирования для проектов Symfony, а также внутренних и сторонних пакетов. Он определяет стандарты кодирования и соглашения, используемые в ядре фреймворка, чтобы сделать его более единообразным и предсказуемым.
#вопросы_с_собеседований
Symfony — это фреймворк, основанный на соглашениях. Документ Coding Standards иллюстрирует нормы кодирования для проектов Symfony, а также внутренних и сторонних пакетов. Он определяет стандарты кодирования и соглашения, используемые в ядре фреймворка, чтобы сделать его более единообразным и предсказуемым.
#вопросы_с_собеседований
🌚6❤🔥1
Преобразование запросов и ответов API в Laravel 11
Автор рассказывает о своем опыте работы с приложением, использующим Next.js на фронтенде и Laravel на бэкенде в качестве традиционного REST API. Он столкнулся с проблемой различных соглашений по именованию в PHP и JavaScript, где в первом случае принято использовать snake_case, а во втором — camelCase. Это вызвало трудности при форматировании API-ответов, так как таблицы и колонки базы данных также использовали snake_case.
Для решения этой проблемы предложено использовать Laravel resources для создания чистых API-ответов, где каждый ключ можно было указать в camelCase. Он представил класс ProductResource, который наследует JsonResource и позволяет преобразовывать ресурс в массив с ключами в camelCase.
Однако, поскольку форматирование каждого API-ответа в camelCase может быть трудоемким, особенно при наличии отношений Eloquent, которые также нужно форматировать, автор предложил создать базовый класс BaseResource, который расширяет класс JsonResource и форматирует все ключи в camelCase. Этот класс использует метод Str::camel() из Laravel для преобразования ключей и рекурсивно обрабатывает вложенные массивы.
В результате, у автора получилось два сценария использования:
1. Простое наследование от класса BaseResource для отображения видимых полей таблицы без форматирования отношений или скрытых полей, исключенных из API-ответа.
2. Форматирование API-ответа с сохранением snake_case, расширением класса BaseResource и реализацией метода toCamelCase().
Автор рассказывает о своем опыте работы с приложением, использующим Next.js на фронтенде и Laravel на бэкенде в качестве традиционного REST API. Он столкнулся с проблемой различных соглашений по именованию в PHP и JavaScript, где в первом случае принято использовать snake_case, а во втором — camelCase. Это вызвало трудности при форматировании API-ответов, так как таблицы и колонки базы данных также использовали snake_case.
Для решения этой проблемы предложено использовать Laravel resources для создания чистых API-ответов, где каждый ключ можно было указать в camelCase. Он представил класс ProductResource, который наследует JsonResource и позволяет преобразовывать ресурс в массив с ключами в camelCase.
Однако, поскольку форматирование каждого API-ответа в camelCase может быть трудоемким, особенно при наличии отношений Eloquent, которые также нужно форматировать, автор предложил создать базовый класс BaseResource, который расширяет класс JsonResource и форматирует все ключи в camelCase. Этот класс использует метод Str::camel() из Laravel для преобразования ключей и рекурсивно обрабатывает вложенные массивы.
В результате, у автора получилось два сценария использования:
1. Простое наследование от класса BaseResource для отображения видимых полей таблицы без форматирования отношений или скрытых полей, исключенных из API-ответа.
2. Форматирование API-ответа с сохранением snake_case, расширением класса BaseResource и реализацией метода toCamelCase().
DEV Community
Transforming API requests and responses in Laravel 11 - The easy way
The problem I've been working on an application using Next.js on the front-end and Laravel...
👍5🌚1
Там мы будем рассказывать про все существующие нейросети, которые генерируют музыку и голос — с пошаговыми инструкциями, инструментами и лайфхаками.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2