При разработке модульных тестов важно, чтобы они были сосредоточены на тестируемом коде, не затрагивая внешние системы или зависимости. В PHPUnit на помощь приходят так называемые mock-объекты. Они позволяют имитировать поведение реальных объектов в контролируемом виде, что делает тесты более надежными и простыми в сопровождении. В этой статье мы подробно рассмотрим, что такое mock-объекты, в чём их преимущества и как эффективно использовать их в PHPUnit.
#webdev #php #phpunit #mock #testing
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы давно работаете с Laravel, то, возможно, знаете о функции, позволяющей создавать временные и подписанные URL-адреса для файлов. Это отличная возможность, позволяющая делиться файлами с другими пользователями в течение определенного времени.
Проблема с этой функцией в том, что она работает только с драйвером хранилища AWS S3. Поэтому, если вы работаете над приложением в локальной среде и хотите протестировать эту функцию, необходимо использовать драйвер хранилища S3 и реальный S3 bucket, что довольно неудобно, поскольку для использования этой функции необходимо предварительно завести учетную запись AWS.
#webdev #Laravel #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
Иногда случаются ошибки, и неудачный коммит может попасть в удалённый репозиторий. В условиях совместной работы отмена таких коммитов с сохранением истории проекта крайне важна для поддержания чистоты рабочего процесса.
git revert позволяет разработчикам отменить последствия предыдущего коммита, не переписывая историю, в отличие от git reset. В этом руководстве вы узнаете, как эффективно использовать git revert.К концу руководства вы поймете, как безопасно отменять сдвинутые коммиты, обрабатывать несколько коммитов и управлять слиянием коммитов.
#webdev #git #howto
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, веб-разработчики Laravel! В этой статье мы рассмотрим, как создать мульти-аутентификацию с помощью Breeze в Laravel 11. В Laravel 11 мы будем создавать множественную аутентификацию с помощью Breeze. Мы начнем с установки свежего приложения Laravel 11 для мульти-аутентификации.
Затем мы установим Laravel Breeze, чтобы настроить механизм аутентификации. После этого мы добавим столбец «type» в таблицу пользователей, чтобы определить три типа пользователей: User, Agent и Admin. Наконец, мы создадим middleware «role» для управления правами доступа на основе ролей пользователей.
#webdev #Laravel #Laravel11 #Breeze
Please open Telegram to view this post
VIEW IN TELEGRAM
Недавно мы посетили доклад Николаса Грекаса о ленивой загрузке, и он вдохновил меня на создание этой статьи!
Мы можем найти ленивую загрузку во всех современных PHP-приложениях, например, в ORM. Но есть ли другие способы использования ленивой загрузки?
#webdev #Symfony #Doctrine #php
Please open Telegram to view this post
VIEW IN TELEGRAM
Давайте анимируем пользовательские свойства CSS! Это мощный способ применить CSS-анимацию, которая в противном случае была бы утомительной или непрактичной.
#webdev #css #animation
Please open Telegram to view this post
VIEW IN TELEGRAM
Атрибуты PHP - это отличный способ добавить метаданные к вашим классам, методам и свойствам. Laravel предоставляет множество атрибутов из коробки, которые можно использовать в своих приложениях.
#webdev #Laravel #php
Please open Telegram to view this post
VIEW IN TELEGRAM
:hasНе знаю, заметили ли вы, но мир CSS в последнее время просто пылает.
За кулисами все основные производители браузеров и авторы спецификаций CSS работают вместе, чтобы предоставить тонны очень востребованных возможностей CSS. Это такие вещи, как запросы к контейнерам, вложенность CSS, синтаксис относительных цветов, сбалансированный текст и многое другое.
Одна из этих новых возможностей - псевдокласс
:has. И, честно говоря, я не был уверен, насколько он будет полезен для меня. В основном я создаю веб-приложения на React, а это значит, что я не использую сложные селекторы. Будет ли псевдокласс :has действительно полезен в этом контексте?#webdev #css
Please open Telegram to view this post
VIEW IN TELEGRAM
Существует несколько способов получить количество строк из базы данных с помощью Eloquent в Laravel. Давайте рассмотрим основы, а затем обратимся к гораздо лучшему решению при подсчете по связанным моделям - использованию агрегатов на уровне базы данных.
#webdev #Laravel #Eloquent #Database #php
Please open Telegram to view this post
VIEW IN TELEGRAM
В JavaScript обычные функции возвращают одно значение или вообще ничего, но что, если бы вы могли выдавать несколько значений по запросу? Представляем вам генераторы - мощную функцию, появившуюся в ECMAScript 2015 (ES6), позволяющую функциям выдавать несколько значений, что дает возможность лучше контролировать итерацию.
Генераторы, созданные с помощью специального синтаксиса
function*, ведут себя совершенно иначе, чем традиционные функции. Вместо того чтобы выполняться до конца после вызова, функция-генератор возвращает объект генератор, способный управлять её выполнением. Это позволяет функции приостанавливать и возобновлять выполнение, выдавая значения одно за другим с помощью ключевого слова yield.Если вы создаете потоки данных, управляете асинхронными операциями или выполняете итерации над большими наборами данных, генераторы обеспечивают элегантное решение, позволяя выполнять итерации по требованию. Это введение посвящено принципу работы функций-генераторов, изучению ключевых методов, таких как
next(), и демонстрации того, как они органично сочетаются с циклами for...of в JavaScript.Далее вы узнаете, как использовать возможности генераторов JavaScript для упрощения итерации и оптимизации производительности кода.
#webdev #JavaScript #js #beginners #tutorial
Please open Telegram to view this post
VIEW IN TELEGRAM
По мере развития JavaScript появляются новые возможности и предложения, призванные сделать кодирование более эффективным и защищенным от ошибок. Одной из таких функций стал оператор безопасного присваивания (
?=), предложенный в качестве дополнения к языку. Хотя мы всё ещё ждём его официального релиза, реализовать подобную функциональность можно уже сегодня, чтобы обезопасить код от таких распространённых проблем, как null или undefined значения.В статье мы рассмотрим оператор
?=, создадим собственную версию, используя существующий JavaScript, и представим практические способы более изящной обработки промисов в асинхронных операциях.#JavaScript #js
Please open Telegram to view this post
VIEW IN TELEGRAM
Git - это мощная система контроля версий, позволяющая разработчикам управлять изменениями кода в нескольких ветвях. Одна из самых полезных функций Git -
git cherry-pick, позволяющая применять определенные коммиты из одной ветви в другую. Если необходимо сделать бэкпорт исправления ошибки, синхронизировать функцию между ветвями или изолировать изменения, cherry-pick может сэкономить много времени и хлопот.В этом руководстве мы подробно рассмотрим cherry pick в Git. Рассмотрим всё, начиная с базового использования и заканчивая продвинутыми техниками, включая разрешение конфликтов, работу с несколькими коммитами и применение cherry-pick в сложных рабочих процессах. К концу этого руководства вы будете хорошо понимать, когда и как использовать
git cherry-pick для оптимизации рабочего процесса Git.#webdev #git #howto
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, веб-разработчики Laravel! В этой статье мы рассмотрим, как реализовать валидацию формы на стороне клиента с помощью jQuery в Laravel 11. Мы будем использовать validate.js для обработки проверки формы. При использовании валидации на стороне клиента нет необходимости отправлять форму и ждать, пока сервер вернет ошибки валидации.
Вместо этого ошибки валидации срабатывают мгновенно, без обновления страницы, а сообщения об ошибках отображаются непосредственно в полях ввода.
#laravel #laravel11 #jQuery #form
Please open Telegram to view this post
VIEW IN TELEGRAM
Атаки с использованием CSS-инъекций часто игнорируются при обеспечении веб-безопасности, однако они представляют собой серьезную опасность, если не принять надлежащих мер. Как правило, CSS используется для улучшения визуального представления веб-сайтов, определения макетов, цветов и шрифтов. Однако злоумышленники могут использовать уязвимости в работе с CSS. Это позволяет им внедрять вредоносный код, который манипулирует поведением сайта, крадет конфиденциальные данные или взаимодействует с полями ввода пользователя.
В этом руководстве мы подробно рассмотрим CSS-инъекции. Что это такое, как они работают, какое потенциальное влияние они могут оказать на ваш сайт, а также лучшие методы их предотвращения. Рассмотрим примеры кода от начального до продвинутого уровня.
#webdev #css #html #security
Please open Telegram to view this post
VIEW IN TELEGRAM
Здравствуйте, веб-разработчики Laravel!
В этой статье мы познакомимся с тем, как создавать микросервисы в Laravel 11. В этой версии Laravel микросервисы предоставляют уникальную возможность разделить большое монолитное приложение на множество небольших, слабосвязанных сервисов.
Каждый такой сервис отвечает за конкретную функцию в системе и может масштабироваться независимо. Laravel 11 предлагает прочную основу для создания микросервисов, используя уже существующие функции, такие как очереди, трансляция событий, HTTP-клиенты и обнаружение сервисов.
Архитектура микросервисов позволяет разделить приложение на более мелкие, легко управляемые и независимо развертываемые сервисы. Это, в свою очередь, способствует лучшей масштабируемости, изоляции от сбоев и ускорению процесса разработки.
Давайте рассмотрим, как построить базовую микросервисную архитектуру с помощью Laravel 11, включая методы коммуникации и управление вызовами.
#webdev #laravel #microservice
Please open Telegram to view this post
VIEW IN TELEGRAM
Здравствуйте, веб-разработчики Laravel! В этой статье мы обсудим, как создать событийно-управляемую архитектуру в Laravel 11.
Событийно-управляемая архитектура (EDA) в Laravel позволяет различным частям вашего приложения взаимодействовать асинхронно, используя события и слушателей. Этот архитектурный шаблон помогает разделить сложные рабочие процессы, гарантируя, что каждый компонент может реагировать на изменения состояния или действия пользователя, не будучи напрямую зависимым от других.
В Laravel события представляют собой действия или триггеры, а слушатели обрабатывают логику ответа на них. Широковещательная рассылка событий позволяет клиентам получать информацию в режиме реального времени через WebSockets.
#webdev #laravel #EDA
Please open Telegram to view this post
VIEW IN TELEGRAM
Clickjacking, также известный как модификация UI, - форма атаки, при которой пользователя обманом заставляют нажать не на то, что он воспринимает. Эта вредоносная техника обычно включает в себя наложение скрытых или прозрачных HTML-фреймов поверх легитимных веб-страниц, что заставляет пользователей неосознанно взаимодействовать с невидимыми элементами, вызывающими несанкционированные действия. От перевода средств до изменения настроек или даже раскрытия конфиденциальных данных, clickjacking может иметь серьезные последствия как для пользователей, так и для веб-сайтов.
#webdev #clickjacking #security
Please open Telegram to view this post
VIEW IN TELEGRAM
XML-RPC - протокол удаленного вызова процедур (RPC), использующий XML для кодирования вызовов и HTTP в качестве транспортного механизма. В WordPress XML-RPC обеспечивает удаленный доступ к различным функциям, позволяя пользователям взаимодействовать со своими сайтами без прямого доступа к браузеру. С его помощью работают такие функции, как мобильное приложение, trackback и внешние публикации. Однако эта, казалось бы, полезная функция также может быть использована, что делает её основной целью для брутфорса и DDoS-атак.
#webdev #WordPress #wp #clickjacking #security
Please open Telegram to view this post
VIEW IN TELEGRAM
Здравствуйте, веб-разработчики Laravel! В этой статье мы рассмотрим Laravel-Based Progressive Web App (PWA) с Service Worker. Прогрессивные веб-приложения (PWA) - это веб-приложения, которые сочетают в себе лучшее от веб-приложений и мобильных приложений.
Они предлагают возможность работы в автономном режиме, быстрое время загрузки и push-уведомления, что делает их удобными для пользователей и высокоэффективными. В этом руководстве мы рассмотрим, как создать PWA на Laravel, сосредоточившись на внедрении рабочих служб для стратегии кэширования, обеспечении автономной функциональности и интеграции push-уведомлений.
#webdev #Laravel #PWA
Please open Telegram to view this post
VIEW IN TELEGRAM
Это первая статья из цикла, в котором рассказывается о наиболее важных нововведениях в Symfony 7.2, релиз которого состоится в конце ноября 2024 года.
Symfony включает в себя десятки ограничений для проверки данных в приложениях. В Symfony 7.2 мы добавляем три новых ограничения.
#webdev #Symfony
Please open Telegram to view this post
VIEW IN TELEGRAM
Здравствуйте, веб-разработчики Laravel! В этой статье мы рассмотрим работу eloquent ORM со сложными отношениями. Если вы уже давно используете Laravel, то наверняка знакомы с основами Eloquent ORM - мощного слоя абстракции баз данных в Laravel.
Однако по мере роста приложения может понадобиться обрабатывать более сложные отношения, такие как отношения «многие-ко-многим», полиморфные отношения и глубоко вложенные запросы. Эти отношения могут стать сложными, если их не обрабатывать эффективно, что приведет к проблемам с производительностью.
В этом руководстве я расскажу о некоторых продвинутых методах Eloquent ORM, которые помогут эффективно управлять сложными отношениями и оптимизировать производительность вашего приложения. Мы рассмотрим практические примеры и фрагменты кода, чтобы вам было легко следовать за мной.
#webdev #Laravel #Eloquent
Please open Telegram to view this post
VIEW IN TELEGRAM