Laravel 11. Что нового?
Команда Тейлора скоро выпустит новую мажорную версию фреймворка. Laravel 11 продолжает улучшения, начатые в Laravel 10.x, представляя упрощенную структуру приложения, ограничение скорости в секунду, маршруты проверки состояния приложения, элегантную ротацию ключа шифрования, улучшения в тестировании очередей, транспорт отправки почты, интеграцию с Prompt валидатором, новые команды Artisan и другие нововведения. Кроме того, был представлен Laravel Reverb — масштабируемый сервер WebSocket, обеспечивающий надежную работу в реальном времени.
Основные изменения в Laravel 11:
🔴Требуется PHP 8.2.
🟠Упрощенная структура приложения с новым файлом bootstrap/app.php для настройки маршрутизации, промежуточного ПО, обработки исключений и т.д.
🟡Вместо пяти сервис-провайдеров в Laravel 11 по умолчанию только один — AppServiceProvider, объединяющий функционал предыдущих.
🟢Расширены возможности использования переменных окружения для конфигурации фреймворка.
⚪Удалены файлы маршрутов api.php и channels.php, но их можно создать при необходимости.
🟣Мидлвары теперь настраиваются в bootstrap/app.php, что уменьшает объем приложения.
🔵Планировщик задач теперь настраивается непосредственно в файле routes/console.php.
🔴Обработка исключений также настраивается в bootstrap/app.php.
🟠По умолчанию новые приложения Laravel используют SQLite для хранения данных, что упрощает начало работы.
🟡Laravel Reverb предоставляет быструю и масштабируемую работу с WebSocket, а также поддерживает горизонтальное масштабирование с использованием Redis.
🟢Добавлена поддержка ограничения скорости в секунду.
⚪Введены маршруты проверки состояния приложения.
🟣Добавлена элегантная ротация ключей шифрования.
🔵Добавлены новые команды Artisan для быстрого создания классов, интерфейсов и трейтов.
Команда Тейлора скоро выпустит новую мажорную версию фреймворка. Laravel 11 продолжает улучшения, начатые в Laravel 10.x, представляя упрощенную структуру приложения, ограничение скорости в секунду, маршруты проверки состояния приложения, элегантную ротацию ключа шифрования, улучшения в тестировании очередей, транспорт отправки почты, интеграцию с Prompt валидатором, новые команды Artisan и другие нововведения. Кроме того, был представлен Laravel Reverb — масштабируемый сервер WebSocket, обеспечивающий надежную работу в реальном времени.
Основные изменения в Laravel 11:
🔴Требуется PHP 8.2.
🟠Упрощенная структура приложения с новым файлом bootstrap/app.php для настройки маршрутизации, промежуточного ПО, обработки исключений и т.д.
🟡Вместо пяти сервис-провайдеров в Laravel 11 по умолчанию только один — AppServiceProvider, объединяющий функционал предыдущих.
🟢Расширены возможности использования переменных окружения для конфигурации фреймворка.
⚪Удалены файлы маршрутов api.php и channels.php, но их можно создать при необходимости.
🟣Мидлвары теперь настраиваются в bootstrap/app.php, что уменьшает объем приложения.
🔵Планировщик задач теперь настраивается непосредственно в файле routes/console.php.
🔴Обработка исключений также настраивается в bootstrap/app.php.
🟠По умолчанию новые приложения Laravel используют SQLite для хранения данных, что упрощает начало работы.
🟡Laravel Reverb предоставляет быструю и масштабируемую работу с WebSocket, а также поддерживает горизонтальное масштабирование с использованием Redis.
🟢Добавлена поддержка ограничения скорости в секунду.
⚪Введены маршруты проверки состояния приложения.
🟣Добавлена элегантная ротация ключей шифрования.
🔵Добавлены новые команды Artisan для быстрого создания классов, интерфейсов и трейтов.
👍20🔥10😁5🥱4❤2
💬 Как вы относитесь к парному программированию? Это то самое, при котором два разраба работают вместе над одной задачей, сидя за одним рабочим местом.
👍18🥱7🌚5😁1
Еще один #дайджест новостей по PHP за неделю:
🔎Выпущена версия cakephp phpstan 3.1.0! — много изменений в работе с таблицами и многое другое!
🔎Выпущена Symfony 7.0.4 — Вот список наиболее важных изменений с версии 7.0.3.
🔎Неделя Symfony № 895 (19–25 февраля 2024 г.)
🔎Выпущена версия cakephp phpstan 3.1.0! — много изменений в работе с таблицами и многое другое!
🔎Выпущена Symfony 7.0.4 — Вот список наиболее важных изменений с версии 7.0.3.
🔎Неделя Symfony № 895 (19–25 февраля 2024 г.)
👍5
Мечты о строго и статически типизированном PHP
Сегодня мы рассмотрим важный вопрос. Это возможность превращения PHP из динамически типизированного языка в статически типизированный с помощью введения различных типовых объявлений. С момента выпуска PHP 7.0 в декабре 2015 года в языке появились новые функции для работы с типами данных, такие как типизация параметров функций, возвращаемые типы и свойства классов.
Здесь изложены идеи по дальнейшему усовершенствованию типовой системы PHP. Предлагается внедрение типизации переменных, поддержку типизированных массивов и введение псевдонимов типов для улучшения читаемости и поддержки кода.
Кроме того, обсуждается вопрос о том, каким образом внедрить эти функции, предлагаются различные варианты синтаксиса для реализации типизации переменных и массивов, а также предлагается использование псевдонимов типов для упрощения работы с повторяющимися типами данных в коде.
Сегодня мы рассмотрим важный вопрос. Это возможность превращения PHP из динамически типизированного языка в статически типизированный с помощью введения различных типовых объявлений. С момента выпуска PHP 7.0 в декабре 2015 года в языке появились новые функции для работы с типами данных, такие как типизация параметров функций, возвращаемые типы и свойства классов.
Здесь изложены идеи по дальнейшему усовершенствованию типовой системы PHP. Предлагается внедрение типизации переменных, поддержку типизированных массивов и введение псевдонимов типов для улучшения читаемости и поддержки кода.
Кроме того, обсуждается вопрос о том, каким образом внедрить эти функции, предлагаются различные варианты синтаксиса для реализации типизации переменных и массивов, а также предлагается использование псевдонимов типов для упрощения работы с повторяющимися типами данных в коде.
👍5
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
🧿 Знания — сила! Что должен изучить каждый программист?
❗Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
‼️ Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Опросик
❗Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
‼️ Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Опросик
😁7🤔1
Практический пример декомпозиции монолитного PHP приложения
Декомпозиция монолита — не редкая проблема. Это связано с тем, что на ранних стадиях развития любого стартапа накапливается так называемый decision debt — выбранная архитектура является оптимальной для быстрой разработки и экспериментирования, но не для зрелого продукта.
❗«Decision debt» относится к ситуации, когда команда разработчиков откладывает принятие решения по определенным важным аспектам проекта или архитектурным решениям. Этот долг накапливается, когда разработчики временно откладывают принятие решения, чтобы сосредоточиться на разработке продукта в срок или избежать затрат времени на принятие сложных решений.
Учитывая популярность проблемы, существует множество книг и статей о подходах к её решению, но автор считает, что есть недостаток практических примеров. Поэтому, в этой статье он решил сосредоточиться на технических деталях, используя в качестве примера приложение, написанное на PHP и фреймворке Symfony.
Декомпозиция монолита — не редкая проблема. Это связано с тем, что на ранних стадиях развития любого стартапа накапливается так называемый decision debt — выбранная архитектура является оптимальной для быстрой разработки и экспериментирования, но не для зрелого продукта.
❗«Decision debt» относится к ситуации, когда команда разработчиков откладывает принятие решения по определенным важным аспектам проекта или архитектурным решениям. Этот долг накапливается, когда разработчики временно откладывают принятие решения, чтобы сосредоточиться на разработке продукта в срок или избежать затрат времени на принятие сложных решений.
Учитывая популярность проблемы, существует множество книг и статей о подходах к её решению, но автор считает, что есть недостаток практических примеров. Поэтому, в этой статье он решил сосредоточиться на технических деталях, используя в качестве примера приложение, написанное на PHP и фреймворке Symfony.
Хабр
Практический пример декомпозиции монолитного PHP приложения
Введение Стоит отметить, что сам по себе монолит не является антипаттерном и может отлично работать (и часто работает) при определенных условиях, обычно - когда он выбран осознанно. Но чаще всего...
👍7❤1
ИИ для PHP: как настроить подсказки ИИ для улучшения тестов
В нашем прошлом посте мы рассмотрели, как JetBrains AI Assistant может автоматически создавать модульные тесты. Генерируя скучный шаблонный код, мы можем сразу перейти к более интересной части создания тестов.
Здесь рассказывается про то, как можно улучшить ваши промты для написания более надежных тестов
AI Assistant может быть точнее в предсказании желаемого кода и дает пользователю возможность дополнительно специфицировать запросы с помощью кнопки «Specify».
Также здесь подчеркивается, что целью не является генерация идеального кода, а скорее упрощение скучных и рутинных задач, чтобы программисты могли сосредоточиться на более интересных частях разработки.
В нашем прошлом посте мы рассмотрели, как JetBrains AI Assistant может автоматически создавать модульные тесты. Генерируя скучный шаблонный код, мы можем сразу перейти к более интересной части создания тестов.
Здесь рассказывается про то, как можно улучшить ваши промты для написания более надежных тестов
AI Assistant может быть точнее в предсказании желаемого кода и дает пользователю возможность дополнительно специфицировать запросы с помощью кнопки «Specify».
Также здесь подчеркивается, что целью не является генерация идеального кода, а скорее упрощение скучных и рутинных задач, чтобы программисты могли сосредоточиться на более интересных частях разработки.
Telegram
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
ИИ для PHP: как автоматизировать модульное тестирование с помощью AI Assistant?
JetBrains предлагает использовать искусственный интеллект для автоматизации процесса тестирования, представляя новый инструмент JetBrains AI Assistant. С помощью этого инструмента…
JetBrains предлагает использовать искусственный интеллект для автоматизации процесса тестирования, представляя новый инструмент JetBrains AI Assistant. С помощью этого инструмента…
🥱4👍2❤1
Какие способы оптимизации производительности баз данных знаете?
Существует несколько основных способов оптимизации баз данных:
Индексирование: Убедитесь, что ваша база данных имеет правильные индексы для часто используемых запросов. Индексы позволяют ускорить поиск данных.
Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных.
Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached.
Ограничение объема данных: Загружайте только те данные, которые действительно нужны. Используйте LIMIT и OFFSET при запросах, чтобы извлекать только необходимое количество записей.
Оптимизация структуры таблиц: Проведите анализ структуры таблиц и убедитесь, что она оптимально сбалансирована для ваших запросов. Иногда изменение типов данных, уменьшение размера полей или нормализация таблиц может улучшить производительность.
Использование транзакций: Используйте транзакции для группировки нескольких операций в одну единицу работы. Это помогает уменьшить накладные расходы на управление транзакциями и обеспечить целостность данных.
Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных.
Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.
#вопросы_с_собеседований
Существует несколько основных способов оптимизации баз данных:
Индексирование: Убедитесь, что ваша база данных имеет правильные индексы для часто используемых запросов. Индексы позволяют ускорить поиск данных.
Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных.
Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached.
Ограничение объема данных: Загружайте только те данные, которые действительно нужны. Используйте LIMIT и OFFSET при запросах, чтобы извлекать только необходимое количество записей.
Оптимизация структуры таблиц: Проведите анализ структуры таблиц и убедитесь, что она оптимально сбалансирована для ваших запросов. Иногда изменение типов данных, уменьшение размера полей или нормализация таблиц может улучшить производительность.
Использование транзакций: Используйте транзакции для группировки нескольких операций в одну единицу работы. Это помогает уменьшить накладные расходы на управление транзакциями и обеспечить целостность данных.
Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных.
Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.
#вопросы_с_собеседований
👍14🌚5❤1
Пиши код в Laravel как senior
🚀Здесь рассматриваются ключевые практики и принципы разработки во фреймворке Laravel. Начинается всё с обзора основ Laravel, 🏛️ включая его архитектуру MVC, ORM Eloquent, шаблонизатор Blade, а также компоненты, такие как миграции, сидеры и промежуточные слои.🛠️
Далее предоставляются примеры ❌«неправильного» и ✅«правильного» кода, демонстрируя, как следовать стандартам и соглашениям Laravel для написания чистого, эффективного и масштабируемого кода.
Также обсуждаются важность принципов DRY и использования сервисов для обработки бизнес-логики, а также предлагает советы по оптимизации и лучшим практикам, таким как использование команд Artisan, миграции базы данных, промежуточные слои и автоматизированное тестирование.
🚀Здесь рассматриваются ключевые практики и принципы разработки во фреймворке Laravel. Начинается всё с обзора основ Laravel, 🏛️ включая его архитектуру MVC, ORM Eloquent, шаблонизатор Blade, а также компоненты, такие как миграции, сидеры и промежуточные слои.🛠️
Далее предоставляются примеры ❌«неправильного» и ✅«правильного» кода, демонстрируя, как следовать стандартам и соглашениям Laravel для написания чистого, эффективного и масштабируемого кода.
Также обсуждаются важность принципов DRY и использования сервисов для обработки бизнес-логики, а также предлагает советы по оптимизации и лучшим практикам, таким как использование команд Artisan, миграции базы данных, промежуточные слои и автоматизированное тестирование.
DEV Community
Writing Code like a Senior Developer in Laravel
In the evolving landscape of web development, Laravel has emerged as one of the prominent PHP...
🥱19👍2👾2🌚1
Chronos for Laravel
Интересный пет-проект, предоставляющий веб-интерфейс для управления командами Laravel в real-time без необходимости лезть в код проекта.
Интересный пет-проект, предоставляющий веб-интерфейс для управления командами Laravel в real-time без необходимости лезть в код проекта.
Хабр
Управляем командами на Laravel
Chronos for Laravel Сегодня я расскажу о небольшом пет-проекте. Реализован он был для собственных нужд и с целью более гибкого управления выполнением команд. На Laravel имеется хорошая база для...
👍6
Создание поддерживаемых PHP-приложений: анализ данных и анализ бизнес-процессов
Здесь обсуждается различие между традиционным подходом CRUD (Create, Read, Update, Delete) к разработке программного обеспечения и более ориентированным на бизнес процесс подходом. В традиционном подходе упор делается на технические аспекты, такие как манипуляции с данными в базе данных, в то время как в бизнес-ориентированном подходе акцент делается на описании поведения системы и ее бизнес-процессов.
Статья указывает на проблемы традиционного подхода, такие как упущение важных аспектов бизнес-процессов, сложность в понимании бизнес-логики для разработчиков и необходимость углубленного понимания предметной области для эффективной разработки.
Далее предлагается использовать более ориентированный на бизнес процесс подход, который позволяет лучше описать и понять бизнес-логику, именуя классы, методы и свойства так, чтобы они отражали бизнес-термины, а не технические детали. Это позволяет разработчикам лучше понимать и описывать бизнес-процессы, а также создавать более читаемый и понятный код.
Здесь обсуждается различие между традиционным подходом CRUD (Create, Read, Update, Delete) к разработке программного обеспечения и более ориентированным на бизнес процесс подходом. В традиционном подходе упор делается на технические аспекты, такие как манипуляции с данными в базе данных, в то время как в бизнес-ориентированном подходе акцент делается на описании поведения системы и ее бизнес-процессов.
Статья указывает на проблемы традиционного подхода, такие как упущение важных аспектов бизнес-процессов, сложность в понимании бизнес-логики для разработчиков и необходимость углубленного понимания предметной области для эффективной разработки.
Далее предлагается использовать более ориентированный на бизнес процесс подход, который позволяет лучше описать и понять бизнес-логику, именуя классы, методы и свойства так, чтобы они отражали бизнес-термины, а не технические детали. Это позволяет разработчикам лучше понимать и описывать бизнес-процессы, а также создавать более читаемый и понятный код.
Davor Minchorov
Building Maintainable PHP Applications: Thinking Data vs Thinking Business Processes
👍2❤1
Forwarded from Proglib.academy | IT-курсы
🪨💧Hard skills и soft skills: что это и как они проверяются на техническом собеседовании
Рассмотрим, что именно представляют из себя эти два типа навыков, а также как их проверяют на технических собеседованиях, и почему современные компании все больше ценят комбинацию обеих категорий навыков при отборе кандидатов.
🔗 Читать статью
Рассмотрим, что именно представляют из себя эти два типа навыков, а также как их проверяют на технических собеседованиях, и почему современные компании все больше ценят комбинацию обеих категорий навыков при отборе кандидатов.
🔗 Читать статью
👏3🎉2🥱1🌚1
Принцип разделения интерфейса (ISP) с использованием PHP: принцип SOLID
Здесь рассматривается Принцип разделения интерфейса (ISP) в программировании. ISP подобен организации библиотеки, где каждый класс должен реализовывать только те методы, которые ему нужны, а не те, которые ему не нужны, подобно тому, как человек не должен брать книги из каждого раздела библиотеки. Нарушение этого принципа может привести к избыточности интерфейсов и затруднить поддержку и расширение кода.
Далее представлен пример кода, нарушающего принцип ISP, и показывает, как его можно исправить, разделив большой интерфейс на более мелкие, специализированные. Разделение интерфейса на более мелкие кусочки помогает классам быть более фокусированными на своих конкретных обязанностях, что повышает читаемость и управляемость кода, а также облегчает расширение и модификацию.
Здесь рассматривается Принцип разделения интерфейса (ISP) в программировании. ISP подобен организации библиотеки, где каждый класс должен реализовывать только те методы, которые ему нужны, а не те, которые ему не нужны, подобно тому, как человек не должен брать книги из каждого раздела библиотеки. Нарушение этого принципа может привести к избыточности интерфейсов и затруднить поддержку и расширение кода.
Далее представлен пример кода, нарушающего принцип ISP, и показывает, как его можно исправить, разделив большой интерфейс на более мелкие, специализированные. Разделение интерфейса на более мелкие кусочки помогает классам быть более фокусированными на своих конкретных обязанностях, что повышает читаемость и управляемость кода, а также облегчает расширение и модификацию.
DEV Community
Interface Segregation Principle (ISP) By Using PHP : SOLID Principle
Introduction: Hey there, fellow coders! Welcome to my article where we’re going to dive...
🎉4❤1👍1
Логирование с помощью Monolog
В этом видео будет рассмотрен пакет Monolog для логирования PHP-приложения.
Monolog отправляет ваши логи в файлы, сокеты, почтовые ящики, базы данных и различные веб-сервисы. Специальные обработчики позволяют создавать расширенные стратегии ведения логов.
Эта библиотека реализует интерфейс PSR-3, который вы можете использовать в своих собственных библиотеках, чтобы обеспечить максимальную совместимость.
В этом видео будет рассмотрен пакет Monolog для логирования PHP-приложения.
Monolog отправляет ваши логи в файлы, сокеты, почтовые ящики, базы данных и различные веб-сервисы. Специальные обработчики позволяют создавать расширенные стратегии ведения логов.
Эта библиотека реализует интерфейс PSR-3, который вы можете использовать в своих собственных библиотеках, чтобы обеспечить максимальную совместимость.
YouTube
PHP Logging with Monolog
This video will explore the Monolog package for logging in PHP applications.
We'll cover key concepts like logger objects, handlers, formatters and integration with Better Stack for centralized storage and analysis of logs.
► RELATED GUIDES
How to Get…
We'll cover key concepts like logger objects, handlers, formatters and integration with Better Stack for centralized storage and analysis of logs.
► RELATED GUIDES
How to Get…
🥰3👍2❤1