Выбираем подходящий PHP-фреймворк для проекта
Здесь обсуждаются различные PHP-фреймворки и их пригодность для различных типов проектов, предоставляя исследования Laravel, Symfony, Yii, Slim и Laminas (Mezzio). Вот некоторые тезисы:
Laravel:
🟠Популярен в PHP-сообществе, баланс между сложностью и функциональностью.
🟠Подходит для B2B-решений, проектов с высокой нагрузкой и сложной бизнес-логикой.
🟠Включает готовые решения для общих задач, поддерживающее сообщество, и Laravel Octane для оптимизации производительности.
Symfony:
🟠Гибкий и настраиваемый фреймворк с активным сообществом.
🟠Используется в крупных корпоративных проектах, таких как Spotify и Yahoo.
🟠Более сложный чем Laravel, с более высоким порогом входа, но предлагает решения для различных случаев.
Yii:
🟠Объектно-ориентированный MVC-фреймворк с генерацией CRUD.
🟠Используется для приложений любой сложности, но утрачивает популярность в сравнении с Laravel.
🟠Известен быстрым развитием, соблюдением принципа DRY, и Ajax-виджетами для валидации данных.
Slim:
🟠Микрофреймворк для простых, но мощных веб-приложений и API.
🟠Быстрый и легкий, подходит для маленьких задач, где Symfony и Laravel могут быть избыточны.
🟠Используется для небольших API, микросервисов и отдельных сервисов в рамках монолита.
Laminas (Mezzio):
🟠Mezzio — это форк Zend Framework, созданный для модульных приложений.
Подходит для различных целей, в основном для API и микросервисов.
Хорошая поддержка, совместимость с Swoole и богатые библиотеки для синхронизации с внешними сервисами.
Здесь обсуждаются различные PHP-фреймворки и их пригодность для различных типов проектов, предоставляя исследования Laravel, Symfony, Yii, Slim и Laminas (Mezzio). Вот некоторые тезисы:
Laravel:
🟠Популярен в PHP-сообществе, баланс между сложностью и функциональностью.
🟠Подходит для B2B-решений, проектов с высокой нагрузкой и сложной бизнес-логикой.
🟠Включает готовые решения для общих задач, поддерживающее сообщество, и Laravel Octane для оптимизации производительности.
Symfony:
🟠Гибкий и настраиваемый фреймворк с активным сообществом.
🟠Используется в крупных корпоративных проектах, таких как Spotify и Yahoo.
🟠Более сложный чем Laravel, с более высоким порогом входа, но предлагает решения для различных случаев.
Yii:
🟠Объектно-ориентированный MVC-фреймворк с генерацией CRUD.
🟠Используется для приложений любой сложности, но утрачивает популярность в сравнении с Laravel.
🟠Известен быстрым развитием, соблюдением принципа DRY, и Ajax-виджетами для валидации данных.
Slim:
🟠Микрофреймворк для простых, но мощных веб-приложений и API.
🟠Быстрый и легкий, подходит для маленьких задач, где Symfony и Laravel могут быть избыточны.
🟠Используется для небольших API, микросервисов и отдельных сервисов в рамках монолита.
Laminas (Mezzio):
🟠Mezzio — это форк Zend Framework, созданный для модульных приложений.
Подходит для различных целей, в основном для API и микросервисов.
Хорошая поддержка, совместимость с Swoole и богатые библиотеки для синхронизации с внешними сервисами.
Хабр
Выбираем подходящий PHP-фреймворк для проекта
Привет, Хабр. Меня зовут Денис, я backend-разработчик в Пиробайте . Поговорим о самых распространенных PHP-фреймворках и о том, для каких проектов целесообразнее выбрать тот или иной вариант. ...
👍10🥱6❤2
Зачем создавать собственные исключения?
Исключения предназначены для обработки неожиданных ситуаций, и их использование особенно полезно при взаимодействии с внешними ресурсами, такими как сторонние API. В случае поддержки публичных API рекомендуется использовать исключения при обнаружении некорректных входных данных, чтобы предотвратить попадание их в основную часть приложения.
Статья сравнивает встроенные исключения с собственными. Рекомендуется создавать собственные исключения для обработки конкретных случаев, которые могут быть ловлены другими частями кода, вместо использования общего встроенного исключения. Приведены примеры использования обоих видов исключений.
Следует осторожно обращаться с блоками catch, ведь есть шанс «поглощения» исключений. Например, при работе с базой данных, критические ошибки следует допускать и записывать в лог, чтобы обеспечить прозрачность отслеживание проблем.
Исключения предназначены для обработки неожиданных ситуаций, и их использование особенно полезно при взаимодействии с внешними ресурсами, такими как сторонние API. В случае поддержки публичных API рекомендуется использовать исключения при обнаружении некорректных входных данных, чтобы предотвратить попадание их в основную часть приложения.
Статья сравнивает встроенные исключения с собственными. Рекомендуется создавать собственные исключения для обработки конкретных случаев, которые могут быть ловлены другими частями кода, вместо использования общего встроенного исключения. Приведены примеры использования обоих видов исключений.
Следует осторожно обращаться с блоками catch, ведь есть шанс «поглощения» исключений. Например, при работе с базой данных, критические ошибки следует допускать и записывать в лог, чтобы обеспечить прозрачность отслеживание проблем.
👍6❤2🤩1
В чем разница между WHERE и HAVING?
WHERE и HAVING являются двумя различными операторами условий в языке SQL, которые используются для фильтрации данных.
Оператор WHERE используется в выражении SELECT для фильтрации строк до их группировки и агрегации. Он определяет условия, которым должны соответствовать отдельные записи перед тем, как они будут включены в результирующий набор данных.
В примере оператор WHERE фильтрует строки таблицы employees и выбирает только те строки, где значение столбца 'department' равно 'Sales'.
Оператор HAVING используется после операции GROUP BY в выражении SELECT для фильтрации результатов группировки и агрегации. Он определяет условия, которым должны соответствовать группы записей, чтобы они были включены в результирующий набор данных после группировки.
В примере оператор HAVING фильтрует результаты группировки таблицы employees и выбирает только те группы записей, где количество сотрудников больше 5.
Таким образом, основная разница между WHERE и HAVING заключается в том, что WHERE фильтрует строки до группировки и агрегации, а HAVING фильтрует результаты после группировки и агрегации.
#вопросы_с_собеседований
WHERE и HAVING являются двумя различными операторами условий в языке SQL, которые используются для фильтрации данных.
Оператор WHERE используется в выражении SELECT для фильтрации строк до их группировки и агрегации. Он определяет условия, которым должны соответствовать отдельные записи перед тем, как они будут включены в результирующий набор данных.
В примере оператор WHERE фильтрует строки таблицы employees и выбирает только те строки, где значение столбца 'department' равно 'Sales'.
Оператор HAVING используется после операции GROUP BY в выражении SELECT для фильтрации результатов группировки и агрегации. Он определяет условия, которым должны соответствовать группы записей, чтобы они были включены в результирующий набор данных после группировки.
В примере оператор HAVING фильтрует результаты группировки таблицы employees и выбирает только те группы записей, где количество сотрудников больше 5.
Таким образом, основная разница между WHERE и HAVING заключается в том, что WHERE фильтрует строки до группировки и агрегации, а HAVING фильтрует результаты после группировки и агрегации.
#вопросы_с_собеседований
👍15❤6🥱4🔥2⚡1
🤔Некоторые разработчики недооценивают полезность трейтов, обвиняя в «переинжиниринге» или «преждевременной абстракции». Однако, не следует обобщать все случаи использования трейтов, вот яркий пример их эффективного применения в Laravel.
🌐 Практический пример: Livewire Toaster:
Создается пакет «Livewire Toaster» для управления всплывающими уведомлениями, используя трейты и декораторы. Подчеркивается «умное» управление временем отображения сообщений и легкость в использовании.
💻 Реализация:
Автор предоставляет код для регистрации коллекторов в сервис-контейнере Laravel с использованием метода extend. Он демонстрирует создание декораторов, таких как «AccessibleCollector» и «TranslatingCollector».
🌐 Практический пример: Livewire Toaster:
Создается пакет «Livewire Toaster» для управления всплывающими уведомлениями, используя трейты и декораторы. Подчеркивается «умное» управление временем отображения сообщений и легкость в использовании.
💻 Реализация:
Автор предоставляет код для регистрации коллекторов в сервис-контейнере Laravel с использованием метода extend. Он демонстрирует создание декораторов, таких как «AccessibleCollector» и «TranslatingCollector».
muhammedsari.me
Hands-on decoration - Muhammed Sarı
Mastering elation with the decorator foundation! Let's take a look at how we can leverage this simple, yet powerful design pattern in the context of a Laravel package.
👍4❤3🔥3🎉2🌚2
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
📈 Обзор рынка труда в ИТ: III квартал 2023 года
В этой статье обсудим зарплату программистов в III квартале 2023 года, динамику вакансий, тенденции рынка труда в ИТ и многое другое. Присоединяйтесь!
Читать статью
В этой статье обсудим зарплату программистов в III квартале 2023 года, динамику вакансий, тенденции рынка труда в ИТ и многое другое. Присоединяйтесь!
Читать статью
👏7🌚3❤1😁1
Недокументированная возможность в Phpstorm: нативная консоль php -a с автодополнением из IDE
В PhpStorm есть хитрость, позволяющяя использовать консоль PHP как альтернативу Python Console. Здесь рассказывается о возможности интегрировать консоль PHP с IDE, добавив возможность отладки, что обеспечивает автодополнение и другие функции IDE в консоли PHP.
В PhpStorm есть хитрость, позволяющяя использовать консоль PHP как альтернативу Python Console. Здесь рассказывается о возможности интегрировать консоль PHP с IDE, добавив возможность отладки, что обеспечивает автодополнение и другие функции IDE в консоли PHP.
🔥12👍3🥱3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤2
Обновление Laravel: с 5.7 до 10.x
В Laravel есть возможность прямого перехода к последней версии (Laravel 10.x) независимо от текущей версии, обходя инкрементальные обновления. Процесс подробно описывается в пяти шагах:
1️⃣Настройка окружения:
Создание окружения для Laravel 10.x, требующего PHP 8.1 и указанных расширений.
2️⃣Обновление только Laravel:
Изначально фокус на обновлении базовых пакетов Laravel.
Создание нового файла composer.json на основе ветки Laravel 10.x из GitHub.
Запуск composer install для выявления и пошагового устранения ошибок.
3️⃣Установка зависимостей:
Решение проблем, связанных с фреймворком, сравнив изменения между текущей версией и Laravel 10.x на GitHub.
Ручное объединение изменений там, где это необходимо, особенно в файлах с пользовательскими модификациями.
4️⃣Установка оставшихся зависимостей:
Установка оставшихся зависимостей, учитывая изменения между файлами composer.json.back и новым composer.json.
Использование сравнения в Git для выявления и избегания установки зависимостей, удаленных Laravel.
5️⃣Финальные рекомендации:
Уделять особое внимание тестированию для обеспечения успешного обновления и правильной работы системы.
Регулярная проверка обновлений в репозитории Laravel и обращение к руководствам по обновлению Laravel для дополнительных идей.
В Laravel есть возможность прямого перехода к последней версии (Laravel 10.x) независимо от текущей версии, обходя инкрементальные обновления. Процесс подробно описывается в пяти шагах:
1️⃣Настройка окружения:
Создание окружения для Laravel 10.x, требующего PHP 8.1 и указанных расширений.
2️⃣Обновление только Laravel:
Изначально фокус на обновлении базовых пакетов Laravel.
Создание нового файла composer.json на основе ветки Laravel 10.x из GitHub.
Запуск composer install для выявления и пошагового устранения ошибок.
3️⃣Установка зависимостей:
Решение проблем, связанных с фреймворком, сравнив изменения между текущей версией и Laravel 10.x на GitHub.
Ручное объединение изменений там, где это необходимо, особенно в файлах с пользовательскими модификациями.
4️⃣Установка оставшихся зависимостей:
Установка оставшихся зависимостей, учитывая изменения между файлами composer.json.back и новым composer.json.
Использование сравнения в Git для выявления и избегания установки зависимостей, удаленных Laravel.
5️⃣Финальные рекомендации:
Уделять особое внимание тестированию для обеспечения успешного обновления и правильной работы системы.
Регулярная проверка обновлений в репозитории Laravel и обращение к руководствам по обновлению Laravel для дополнительных идей.
DEV Community
Upgrading Laravel: An easy Step-by-Step Guide from 5.7 to 10.x
In this article, I'll detail my method for upgrading any Laravel application, regardless of its...
🥱8🔥4❤2
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
❤3👍2
Узнавайте обо всех ваших уведомлениях Laravel с помощью нового пакета Paragraphs.
Это представление нового пакета от компании Paragraph, который обеспечивает более полный контроль над процессом отправки уведомлений. Речь идет о том, как этот инструмент может улучшить видимость и анализ исходящих коммуникаций.
Это представление нового пакета от компании Paragraph, который обеспечивает более полный контроль над процессом отправки уведомлений. Речь идет о том, как этот инструмент может улучшить видимость и анализ исходящих коммуникаций.
Laravel News
Get insights into all your Laravel notifications with Paragraphs new package - Laravel News
Use Paragraph to see a historical log of all your outgoing messages including email, sms and any custom channels.
❤2
В чем разница между «echo» и «print»?
В PHP разница между echo и print заключается в следующем:
1.Возвращаемое значение:
echo: Не возвращает значение. Может принимать несколько аргументов, разделенных запятыми, и выводит их.
print: Всегда возвращает 1, поэтому может использоваться в выражениях.
2.Аргументы:
echo: Может принимать несколько аргументов, и их использование разделяется запятыми.
print: Принимает только один аргумент. Если вы пытаетесь передать ему более одного аргумента или использовать запятые для разделения, это вызовет ошибку.
3.Использование:
echo: Чаще используется для вывода HTML-кода и других строковых данных.
print: Часто используется для вывода единственного значения или переменной, особенно в контексте, где требуется возвращаемое значение.
#вопросы_с_собеседований
В PHP разница между echo и print заключается в следующем:
1.Возвращаемое значение:
echo: Не возвращает значение. Может принимать несколько аргументов, разделенных запятыми, и выводит их.
print: Всегда возвращает 1, поэтому может использоваться в выражениях.
2.Аргументы:
echo: Может принимать несколько аргументов, и их использование разделяется запятыми.
print: Принимает только один аргумент. Если вы пытаетесь передать ему более одного аргумента или использовать запятые для разделения, это вызовет ошибку.
3.Использование:
echo: Чаще используется для вывода HTML-кода и других строковых данных.
print: Часто используется для вывода единственного значения или переменной, особенно в контексте, где требуется возвращаемое значение.
#вопросы_с_собеседований
👍17🥱9❤1🤔1
Как решить исключение «Маршрут не найден» в Laravel 10
Исключение «Маршрут не найден» является распространенной проблемой в Laravel, особенно в 10 версии. В большинстве случаев отображается страница 404, но здесь предлагается возможность перенаправления на любую другую страницу:
🟠На страницу 404
🟠На домашнюю страницу
🟠Перенаправление назад, если маршрут не существует
🟠Перенаправление с использованием обработчика исключений
Осталось только выбрать, что вам по вкусу
Исключение «Маршрут не найден» является распространенной проблемой в Laravel, особенно в 10 версии. В большинстве случаев отображается страница 404, но здесь предлагается возможность перенаправления на любую другую страницу:
🟠На страницу 404
🟠На домашнюю страницу
🟠Перенаправление назад, если маршрут не существует
🟠Перенаправление с использованием обработчика исключений
Осталось только выбрать, что вам по вкусу
DEV Community
How To Solve Route Not Found Exception Laravel 10
Hey there! So, you're working with Laravel 10, and suddenly, you hit a roadblock with the "Route Not...
🥱6🥰4
Обзор LiveWire 3 и Volt
Эта статья-обзор новой, уже третьей версии Livewire. Помимо текстовой версии, есть также видео. Также рассматривается новинка — Volt. Довольно интересный и подробный материал, авторы которого постарались грамотно всё разложить по полочкам
Эта статья-обзор новой, уже третьей версии Livewire. Помимо текстовой версии, есть также видео. Также рассматривается новинка — Volt. Довольно интересный и подробный материал, авторы которого постарались грамотно всё разложить по полочкам
Хабр
Обзор LiveWire 3 и Volt
Приветствую всех поклонников Laravel! Эта статья-обзор новой, уже третьей версии Livewire. Решил сделать эту статью после выпуска на youtube-канале видео обзора Livewire, который понравился аудитории....
👍1🌚1
В сети часто можно увидеть спор на тему лайвкодинга на собесах. Как к этому относитетсь? Достаточно ли тестового задания?
🔥6👍1
🔍Коммуникация в разработке продукта играет ключевую роль. Команда, владеющая навыками коммуникации, может сократить потребность в менеджерах продукта и оптимизировать процессы разработки продукта. Также подчеркивается сложность эффективной коммуникации, особенно при масштабировании команды.
🤔Основная проблема, обсуждаемая здесь, — наличие несогласованных ожиданий, предположений и использование неудачных средств коммуникации. Приводится личный пример, когда месяцы работы над проектом пришлось пересматривать из-за недостаточной эффективной коммуникации. Расширенные документы и долгие разговоры не привели к успешной передаче информации.
🛠️ Решение:
Выбор правильного канала:
📈 Подстраивайте коммуникацию под потребности различных заинтересованных сторон, например, короткие пункты для генеральных директоров, макеты для клиентов и технические требования для разработчиков.
Запрос обратной связи:
🙋 Активно запрашивайте обратную связь по эффективности коммуникации, особенно в отношении понимания проекта и наличия информации.
Показывайте, не рассказывайте:
🎥 Используйте визуальные средства, макеты и демонстрации, чтобы передать информацию более эффективно, чем устные или письменные описания.
Глупые вопросы:
🤷 Запрашивайте ясность, когда это необходимо, поскольку задавание на первый взгляд простых вопросов может улучшить общее понимание.
Удобочитаемость сообщений:
📋 Формулируйте сообщения кратко, структурировано, включайте задачи на действие или четкие указания. Предоставляйте различные форматы для сложной информации, такие как краткое изложение или видеозапись экрана.
Руководства пользователя:
📘 Разрабатывайте индивидуальные руководства, описывающие предпочтения в коммуникации, стиль ответа и предпочтительные средства общения для каждого члена команды. Поощряйте членов команды составлять свои собственные руководства.
🤔Основная проблема, обсуждаемая здесь, — наличие несогласованных ожиданий, предположений и использование неудачных средств коммуникации. Приводится личный пример, когда месяцы работы над проектом пришлось пересматривать из-за недостаточной эффективной коммуникации. Расширенные документы и долгие разговоры не привели к успешной передаче информации.
🛠️ Решение:
Выбор правильного канала:
📈 Подстраивайте коммуникацию под потребности различных заинтересованных сторон, например, короткие пункты для генеральных директоров, макеты для клиентов и технические требования для разработчиков.
Запрос обратной связи:
🙋 Активно запрашивайте обратную связь по эффективности коммуникации, особенно в отношении понимания проекта и наличия информации.
Показывайте, не рассказывайте:
🎥 Используйте визуальные средства, макеты и демонстрации, чтобы передать информацию более эффективно, чем устные или письменные описания.
Глупые вопросы:
🤷 Запрашивайте ясность, когда это необходимо, поскольку задавание на первый взгляд простых вопросов может улучшить общее понимание.
Удобочитаемость сообщений:
📋 Формулируйте сообщения кратко, структурировано, включайте задачи на действие или четкие указания. Предоставляйте различные форматы для сложной информации, такие как краткое изложение или видеозапись экрана.
Руководства пользователя:
📘 Разрабатывайте индивидуальные руководства, описывающие предпочтения в коммуникации, стиль ответа и предпочтительные средства общения для каждого члена команды. Поощряйте членов команды составлять свои собственные руководства.
👍4❤1😁1
#дайджест новостей по PHP за неделю:
🔎Выпущена CakePHP 4.5.2. — Улучшения включают в себя: Значения даты сортировки больше не задают часовой пояс. Исправлено несоответствие между Error.beforeRender и Exception.beforeRender и много чего другого.
🔎Выпущена версия Filament v3.1 — После более чем 100 выпусков патчей для версии Filament v3.0 (это не шутка), наконец-то вышел одно из самых крупных минорных обновлений
🔎Выпущена версия Laravel 10.37 — На этой неделе команда Laravel выпустила версию 10.37 с возможностью хранить пакетные метаданные в DynamoDB, выявлять множественные ошибки в поле и многое другое.
🔎Интеграция MongoDB с Laravel теперь официально поддерживается
🔎Laravel Octane теперь поддерживает FrankenPHP. — Laravel Octane повышает производительность вашего приложения, обслуживая его с помощью мощных серверов приложений, таких как Open Swoole, Swoole и RoadRunner. Начиная с сегодняшнего дня, он также будет поддерживать FrankenPHP.
🔎 Неделя Symfony #885 (11–17 декабря 2023 г.)
🔎Выпущена CakePHP 4.5.2. — Улучшения включают в себя: Значения даты сортировки больше не задают часовой пояс. Исправлено несоответствие между Error.beforeRender и Exception.beforeRender и много чего другого.
🔎Выпущена версия Filament v3.1 — После более чем 100 выпусков патчей для версии Filament v3.0 (это не шутка), наконец-то вышел одно из самых крупных минорных обновлений
🔎Выпущена версия Laravel 10.37 — На этой неделе команда Laravel выпустила версию 10.37 с возможностью хранить пакетные метаданные в DynamoDB, выявлять множественные ошибки в поле и многое другое.
🔎Интеграция MongoDB с Laravel теперь официально поддерживается
🔎Laravel Octane теперь поддерживает FrankenPHP. — Laravel Octane повышает производительность вашего приложения, обслуживая его с помощью мощных серверов приложений, таких как Open Swoole, Swoole и RoadRunner. Начиная с сегодняшнего дня, он также будет поддерживать FrankenPHP.
🔎 Неделя Symfony #885 (11–17 декабря 2023 г.)
👍4