Статьи с тегом «Backend»

BackendLaravel

Laravel: Загрузка файлов с помощью FilePond

При создании веб-приложения часто требуется добавить функцию, позволяющую пользователям загружать файлы. Например, вы можете разрешить пользователям обновлять изображения своего профиля или обмениваться файлами друг с другом.
BackendLaravel

Laravel: Погружение в Уведомления/Notifications

В большинстве Laravel приложений необходимо отправлять уведомления, будь то внутри приложения, по электронной почте или в slack — обычно это уведомления о транзакциях, чтобы предупредить пользователя о каком-либо действии или событии в вашем приложении. Давайте разберёмся, что это такое и как действует.
BackendPHP

PHP: Что такое Интерфейс

Что такое PHP-интерфейс? PHP интерфейс определяет контракт, который должен выполнить класс. Если PHP класс — это схема объектов, то интерфейс — это схема классов. Любой класс реализующий данный интерфейс, будет иметь одинаковое поведение с точки зрения того, что можно вызвать, как его можно вызвать и что будет возвращено.
BackendLaravelEloquent

Laravel: События Модели

При работе с Моделями Eloquent обычно используют события, отправляемые в течении жизненного цикла Моделей. Есть несколько разных способов сделать это, и в этой статье я расскажу о них и объясню преимущества и недостатки каждого из них.
BackendLaravel

Laravel: Data Transfer Objects — Зачем и Как

Data Transfer Object (DTO) — шаблон, который при правильном использовании может улучшить качество и удобство сопровождения приложения. В этой статье мы узнаем, зачем вы должны использовать DTO в своих приложениях и как это сделать в Laravel.
BackendPHP

PHP: Продление срока службы легаси приложений

PHP продолжает развиваться с новыми критическими изменениями, и хотя это отлично подходит для большинства PHP-приложений, существуют легаси/устаревшие приложения, которые не могут оправдать затрат на их поддержку. Это руководство о том, как продлить срок службы легаси приложений с помощью обновлений безопасности и обслуживания.
BackendLaravel

Laravel: Валидация данных приложения

Валидация обязательна для любого современного проекта, и в Laravel очень просто начать. Внутри методов контроллера вы можете вызвать метод, передать запрос и массив правил, на соответствие которыми хотите проверить данные.
BackendLaravel

Laravel: Что такое Pipeline / Пайплайн

Pipeline/Пайплайн — одна из малоизвестных возможностей Laravel. Он часто используется в самом фреймворке, например, маршрутизация, но не так много разработчиков его используют. В этой статье я попытаюсь объяснить их и показать несколько примеров.
BackendLaravelTesting

Laravel API: Тестирование конечных точек JSON:API

JSON:API предоставляет множество возможностей для фильтрации, сортировки и включения дополнительных данных в запрошенные данные с использованием параметров запроса. Тестирование может быть утомительным, но в этом руководстве я расскажу, как подхожу к тестированию этих конечных точек c PestPHP.
BackendLaravel

Laravel API: Переопределение Сообщения об Ошибке 404

Если вы используете привязку модели к маршруту в API Контроллерах и запись не найдена, она автоматически вернёт статус код 404 с сообщением об ошибке, например No query results for model [App\Models\User] 1. Как это изменить?
BackendLaravelEloquent

Eloquent: Оптимизация подсчёта Моделей по Отношениям

При подсчёте записей Модели, сгруппированных по типу в отношении, возникает соблазн загрузить в память слишком много запросов к БД или слишком много данных. Есть несколько способов оптимизировать его, давайте рассмотрим пример.
BackendLaravelEloquent

Laravel: Eloquent Наблюдатели не выполняются при массовых событиях

Если у вас есть события Наблюдателя для обновления или удаления записей, важно знать, что они выполняются только при обновлении отдельных записей, а не при массовом обновлении или удалении.
BackendLaravel

Laravel: Как передать глобальные переменные в Blade.

Представьте, что вы хотите показать некие глобальные данные в Blade: например, количество новых пользователей на этой неделе в верхнем блоке навигации. Не знаете от каких контроллеров будут поступать данные? Вы можете выполнить это действие в Service Provider тремя способами.
BackendLaravelEloquent

Laravel: Eloquent упорядочивание по hasMany отношениям

Представьте, что вы хотите загрузить Модель со многими связанными моделями, но отсортировать эти связанные результаты по некоторому столбцу в этой связанной БД. Как это сделать? Давайте сделаем ещё веселее и возьмём пример двухуровневых отношений.
BackendLaravel

Laravel: Стандартные ответы API с Responsable классами

Представьте работу приложения, в котором каждая конечная точка по-разному возвращает данные об успешных вызовах и вызовах с ошибками. Если это маленькое и простое приложение, поддерживаемое одним человеком, это может быть немного проще. Но если приложение начнёт расти и к команде присоединится больше людей, через некоторое время будет полный хаос для поддержки и улучшения приложения.
BackendPHP

PHP: Зачем следовать PSR-20

Недавно была выпущена спецификация PHP Standards Recommendation 20, призванная помочь разработчикам использовать общий интерфейс получения системных даты и времени. Это важная рекомендация, если вам необходимо протестировать PHP код, манипулирующий системной датой и временем.
BackendLaravel

Laravel: Внедрение зависимости и Сервис контейнер

В этой статье я расскажу о принципе внедрения зависимостей, так же известном как контейнер Inversion of Control (IoC). Расскажу как Laravel использует его внутри и предлагает эту концепцию разработчикам, чтобы их код был понятным и менее взаимозависимым.
BackendLaravel

Laravel: Использование логов для отладки API

Недавно мы создавали Laravel API для мобильного приложения созданного отдельной командой. Когда пользователь сообщил о проблеме, одним из первых вопросов был Эта ошибка связана с API или мобильным приложением? В этой статье я поделюсь стратегией ведения лога, которую мы использовали для быстрого поиска причин проблемы.
BackendLaravel

Laravel: Как работают транзакции базы данных

Продолжаем серию статей о происходящем под капотом, на этот раз о транзакциях базы данных в Laravel. Я не буду повторять всё о том, как вы можете использовать транзакции в Laravel. Если вы не знакомы с темой можете всё найти в официальной документации. Сейчас мы сосредоточимся на том, как эти реализации работают в фоновом режиме, что вызывало головную боль и как этого избежать. Итак, давайте разбираться.
BackendLaravel

Laravel: Преимущество минимальных фабрик

Фабрики Laravel значительно экономят время при написании тестов. Раньше я создавал фабрики, чтобы каждое свойство модели находилось в состоянии по умолчанию, но в последнее время я переключился на минимальные фабрики по умолчанию. Я объясню причины этого изменения и какие преимущества я обнаружил.
BackendPHP

PHP 7.4: Строгая типизация против Слабой

В PHP 5 ввели объявление типов (также известное как подсказки типов), которые позволяют функциям требовать, чтобы параметры имели определённый тип во время вызова. Если заданное значение имеет неправильный тип, то генерируется ошибка: в PHP 5 — исправимая фатальная ошибка, а в PHP 7 — исключение TypeError.
PHPBackend

PHP 8.3: unserialize() обновление ошибки E_NOTICE до E_WARNING

PHP представляет функции serialize() и unserialize() для сериализации любого значения PHP (строки, целые числа, объекты, NULL, массивы, перечисления и т. д.) и восстановление PHP-значения из этого строкового представления.
LaravelBackend

Laravel: Сервис Контейнер — что нужно знать новичкам

Сервис Контейнер (Контейнер Служб), пожалуй, одна из самых запутанных тем для новичков в Laravel. Официальная документация объясняет его хорошо, но с большим количеством теоретических слов. Давайте приступим к практике, и я покажу основные практические примеры, которые вам нужно знать.
LaravelBackend

Laravel: Логирование в приложении

Чтобы помочь вам узнать больше что происходит в вашем приложении, Laravel предоставляет надёжные службы логирования. Логирование в Laravel основано на каналах. Каждый канал представляет определённый способ записи информации в лог.
BackendPHP

PHP 8.2: Readonly-классы / классы только для чтения

В PHP 8.2 введён новый способ объявления классов: readonly-классы. Поскольку readonly-классы — просто синтаксический сахар для того, что бы сделать все свойства класса доступными только для чтения, это означает, что те же правила применяются и к readonly-классам.
BackendPHP

PHP 8.1: Клонирование и изменение readonly-свойств

В PHP 8.1 введены readonly-свойства. Они избавляют от множества проблем, но и добавляют новую — запрет на переопределение readonly-свойств клонированного объекта. Давайте разберёмся с решением этой проблемы и найдём обходной путь.
LaravelBackend

Laravel: 20 полезных советов

Итак, я решил составить список из 20 моих любимых советов, которые я размещал в своих аккаунтах в соцсетях, чтобы все могли познакомиться с ними. Они не размещены в каком-то определённом порядке, но я надеюсь, что вы найдёте хотя бы один новый совет, который окажется полезным.
BackendTools

Топ-5 генераторов статических сайтов в 2022

Многие страницы сайтов динамические. Это означает, что содержимое страницы может меняться от сеанса к сеансу в зависимости от того, кто её загружает, вошёл ли он в систему или вышел, а также от ряда других факторов. Если ваш сайт этого не делает, значит, вы имеете дело со статическими страницами.
SymfonyBackend

Symfony: лучший способ быстрого запуска проектов

При создании новых проектов Symfony вы можете начать с bare-bones skeleton или kitchen sink skeleton. Я никогда не использовал kitchen sink skeleton, так как предпочитаю начинать с минимального количества зависимостей и добавлять пакеты только тогда, когда они мне нужны. Symfony делает это безболезненным, так как в большинстве случаев сообщает, какой пакет добавить, когда вы пытаетесь использовать что-то, что ещё не входит в ваш набор зависимостей.
LaravelBackend

Laravel: Получение информации о пользователе

При разработке веб-приложения может возникнуть ситуация, когда вам нужно узнать некоторую информацию о браузере и операционной системе вашего пользователя. В этой статье мы рассмотрим как это сделать.
LaravelBackend

Laravel: Чистка контроллеров

Контроллеры играют огромную роль в любом проекте основанном на MVC (Model View Controller). По сути, они являются "клеем", который принимает пользовательский запрос, выполняет какую-то логику, а затем возвращает ответ. Если вы когда-либо работали над какими-либо довольно большими проектами, вы замечали, что у вас много контроллеров, и они могут довольно быстро начать превращаться в бардак. В этой статье мы рассмотрим, как можно очистить раздутый контроллер в Laravel.
LaravelBackend

Laravel: Использование транзакций

В веб-разработке важны целостность и точность данных. Поэтому необходимо быть уверенным, что мы пишем код, который безопасно хранит, обновляет и удаляет данные в наших базах данных. В этой статье мы рассмотрим, что такое транзакции базы данных, почему они важны и как начать их использовать в Laravel. Мы так же рассмотрим типичные проблемы связанные с заданиями в очереди и транзакциями баз данных.
PHPBackend

PHP: Интерфейсы vs Абстрактные классы

Недавно я опубликовал статью об улучшении PHP кода с помощью интерфейсов. Она охватывает основы того что такое интерфейс, что он может делать. И как вы можете использовать его сделав свой PHP код более расширяемым и поддерживаемым. Один из вопросов, заданных в комментариях к статье был от разработчиков, которые хотели знать "когда я должен использовать интерфейс вместо абстрактного класса?". Я подумал и решил написать статью, что бы объяснить различия между абстрактными классами и интерфейсами в PHP и дать краткий обзор того, когда вы должны использовать каждый из них.
JavaScriptFrontendBackend

JavaScript: Четыре хитрых концепции в одной строке

На днях коллега подошёл ко мне со строкой кода, которую нашёл на StackOverflow, и спросил, как это работает. И я подумал, что это отличный пример четырёх концепций от среднего до продвинутого уровня JavaScript, поэтому решил записать и обосновать своё объяснение.
SymfonyBackend

Новое в Symfony 5.4: Различные улучшения (часть 3)

Улучшения в Symfony 5.4: более длинные интервалы для компонента RateLimiter; простой способ создания ошибок в компоненте Validator; блокировка файлов при добавлении данных в методе Filesystem; экстрактор метаданных PhpStan для компонента PropertyInfo
SymfonyBackend

Новое в Symfony 5.4: Различные улучшения (часть 2)

Улучшения в Symfony 5.4: настраиваемый статус-код HTTP для шаблонов из маршрутов; новый метод innerText() в компоненте DomCrawler; рекурсивная поддержка .gitignore в компоненте Finder, и новая команда для отладки переменных окружения.
SymfonyBackend

Новое в Symfony 5.4: Улучшения сериализатора

Symfony 5.4 вышел несколько дней назад, но у нас ещё есть записи в блоге об улучшениях основных функций ожидающие своей публикации. В этой публикации мы расскажем об улучшениях добавленных в компонент Serializer.
SymfonyBackend

Новое в Symfony 5.4: Улучшения компонента Messenger

В Symfony версии 5.4 значительно улучшили компонент Messenger, теперь можно любой класс назначить обработчиком компонента, стало проще получать метаданные воркера и появилась обработка сообщений в пакетном режиме.
SymfonyBackend

Symfony: Обновление основной версии (c 5.4.0 до 6.0.0)

Каждые два года Symfony выпускает новый релиз основной/мажорной версии (изменяется первый номер). Эти выпуски довольно сложно обновить, поскольку они могут нарушать обратную совместимость. Однако, Symfony максимально упрощает процесс обновления. Это означает, что вы можете обновить большую часть своего кода до того, как основная версия будет выпущена в релиз. Это называется "сделать ваш код совместимым с будущим релизом".