Массивы — удобный способ организации и передачи данных в PHP-приложениях, но стоит ли это делать? В этой статье я расскажу о минусах злоупотребления использованием ассоциативных массивов и покажу простую альтернативу этому.
https://www.dev-notes.ru/articles/php/avoid-the-aop-array-oriented-programming/
https://www.dev-notes.ru/articles/php/avoid-the-aop-array-oriented-programming/
Заметки разработчика
Избегайте AOP: Array-Oriented Programming
В этой статье я расскажу о минусах злоупотребления использованием ассоциативных массивов и покажу простую альтернативу этому.
👍4
В последнее время в сообществе PHP разработчиков ведутся дебаты о преимуществах и недостатках Композиции и Наследования. В мире объектно-ориентированного программирования (ООП) существует множество мощных инструментов и концепций, каждая из которых имеет свои сильные и слабые стороны и призвана улучшить читаемость, модульность и возможность повторного использования кода.
https://www.dev-notes.ru/articles/php/composition-over-inheritance-in-php/
https://www.dev-notes.ru/articles/php/composition-over-inheritance-in-php/
Заметки разработчика
Композиция вместо Наследования в PHP
В последнее время в сообществе PHP разработчиков ведутся дебаты о преимуществах и недостатках Композиции и Наследования.
Для значений
MySQL и PostgreSQL совершенно по-разному сортируют
https://www.dev-notes.ru/articles/database/order-by-with-null/
NULL в nullable столбцах применяется определённый порядок. Поведение базы данных может быть унифицировано или изменено в соответствии с намерениями приложения путём корректировки размещения значений NULL.MySQL и PostgreSQL совершенно по-разному сортируют
NULL-значения в nullable столбцах. В MySQL они будут располагаться перед всем, а в PostgreSQL — последними. Однако по замыслу приложения или UX может потребоваться другой порядок сортировки. В таких случаях порядок сортировки NULL-значений можно легко изменить.https://www.dev-notes.ru/articles/database/order-by-with-null/
Заметки разработчика
Размещение NULL значений для ORDER BY с nullable столбцами
Установите определённый порядок для NULL значений в nullable столбце при использовании ORDER BY.
👍3
Тип
https://www.dev-notes.ru/articles/typescript/type-never/
never в TypeScript очень мало обсуждается, поскольку он не так распространён и не так неизбежен, как другие типы. Начинающий пользователь TypeScript, вероятно, может игнорировать тип never, поскольку он появляется только при работе с расширенными типами, такими как условные типы, или при чтении загадочных сообщений об ошибках типов.https://www.dev-notes.ru/articles/typescript/type-never/
Заметки разработчика
Полное руководство по типу Never в TypeScript
Тип never в TypeScript очень мало обсуждается, поскольку он не так распространён и не так неизбежен, как другие типы.
Value Objects/Объекты Значения — это фантастическая концепция, которую мы можем использовать для улучшения наших приложений. Они представляют собой небольшие объекты, такие как Money, DateRange, Email или Age, которые мы используем в сложных приложениях. Они являются ключевыми элементами при создании эффективного, понятного и сопровождаемого кода.
Объекты Значения характеризуются неизменяемостью и оцениваются по состоянию, а не по идентичности. В отличие от Entity Objects/Объектов Сущности, которые обладают определённой идентичностью, Объекты Значения не обладают каким-либо уникальным идентификатором. Вместо этого они полностью определяются своим значением, т.е. считается, что два Объекта Значений равны, если их значения совпадают, независимо от того, являются ли они отдельными экземплярами.
Например, возьмём два экземпляра Объекта Значения Money, один из которых создан для представления 10$, а другой отдельно инициирован также для представления 10$. Хотя это два разных экземпляра, в рамках приложения мы считаем их равными, поскольку они представляют одно и то же значение.
Объекты Значения делают ваш код более явным, читаемым и менее подверженным ошибкам. Они инкапсулируют связанные данные в логические и осмысленные концепции и контекст, что облегчает управление, тестирование и отладку. Понимание и правильная реализация Объектов Значений могут значительно упростить сложную бизнес-логику и повысить качество кодовой базы.
https://www.dev-notes.ru/articles/php/understanding-value-objects-in-php/
Объекты Значения характеризуются неизменяемостью и оцениваются по состоянию, а не по идентичности. В отличие от Entity Objects/Объектов Сущности, которые обладают определённой идентичностью, Объекты Значения не обладают каким-либо уникальным идентификатором. Вместо этого они полностью определяются своим значением, т.е. считается, что два Объекта Значений равны, если их значения совпадают, независимо от того, являются ли они отдельными экземплярами.
Например, возьмём два экземпляра Объекта Значения Money, один из которых создан для представления 10$, а другой отдельно инициирован также для представления 10$. Хотя это два разных экземпляра, в рамках приложения мы считаем их равными, поскольку они представляют одно и то же значение.
Объекты Значения делают ваш код более явным, читаемым и менее подверженным ошибкам. Они инкапсулируют связанные данные в логические и осмысленные концепции и контекст, что облегчает управление, тестирование и отладку. Понимание и правильная реализация Объектов Значений могут значительно упростить сложную бизнес-логику и повысить качество кодовой базы.
https://www.dev-notes.ru/articles/php/understanding-value-objects-in-php/
Заметки разработчика
Понимание Value Objects/Объектов Значения в PHP
Value Objects/Объекты Значения — это фантастическая концепция, которую мы можем использовать для улучшения наших приложений.
👍6
TypeScript, мощная надстройка над JavaScript, завоевал популярность среди разработчиков благодаря сложной системе типизации. Он предлагает два способа определения форм данных: типы и интерфейсы. Но как сделать выбор между ними? Знание тонких различий и вариантов использования очень важно для эффективной разработки. В статье мы рассмотрим типы и интерфейсы, изучим их ключевые различия и практические случаи использования, чтобы вы могли принять взвешенное решение о том, когда использовать каждый из них.
https://www.dev-notes.ru/articles/typescript/type-vs-interface/
https://www.dev-notes.ru/articles/typescript/type-vs-interface/
Заметки разработчика
TypeScript: Сравнение Типа и Интерфейса
Мы подробно рассмотрим типы и интерфейсы, изучим ключевые различия между ними и практические случаи использования, чтобы знать, когда применять каждый из них.
Узнайте, как использовать @scope для выбора элементов только в ограниченном поддереве DOM.
https://www.dev-notes.ru/articles/css/at-scope/
https://www.dev-notes.ru/articles/css/at-scope/
Заметки разработчика
Ограничение области действия селекторов с помощью CSS правила @scope
Узнайте, как использовать @scope для выбора элементов только в ограниченном поддереве DOM.
👍1
Forwarded from PHP Fart Time (Алексей roxblnfk)
#Article #php
Всем нравятся Constructor Property Promotion, не так ли?
Теперь попробуем создать объекты из обоих вариантов через рефлексию без использования конструктора.
https://3v4l.org/0tLcM
Такой способ создания объектов в обход конструктора широко используется под капотом многих библиотек, не только тех, которые используют
И иногда это стоит учитывать при работе с классами, которые будут проходить через гидрацию или демаршализацию. У меня такое уже выстреливало 😳.
А если ты счастливый пользователь Cycle ORM, то я рекомендую вообще закрывать конструкторы сущностей (делать пустой приватный конструктор) и вместо этого писать фабрики.
Всем нравятся Constructor Property Promotion, не так ли?
final class Foo {
public function __construct(
public bool $bar = false,
public array $baz = [],
) { }
}
☝️ эти фрагменты кода эквивалентны 👇final class Foo {
public bool $bar;
public array $baz;
public function __construct(
bool $bar = false,
array $baz = [],
) {
$this->bar = $bar;
$this->baz = $baz;
}
}
Но не эквивалентны этому:final class Foo {
public bool $bar = false;
public array $baz = [];
public function __construct(
bool $bar = false,
array $baz = [],
) {
$this->bar = $bar;
$this->baz = $baz;
}
}
Разница в наличии значений по умолчанию у свойств.Теперь попробуем создать объекты из обоих вариантов через рефлексию без использования конструктора.
https://3v4l.org/0tLcM
object(Foo)#3 (0) { ["bar"]=> uninitialized(bool) ["baz"]=> uninitialized(array) }
object(Foo)#3 (2) { ["bar"]=> bool(false) ["baz"]=> array(0) { } }
Если у свойства нет значения по умолчанию, то оно будет неинициализированным.Такой способ создания объектов в обход конструктора широко используется под капотом многих библиотек, не только тех, которые используют
doctrine/instantiator.И иногда это стоит учитывать при работе с классами, которые будут проходить через гидрацию или демаршализацию. У меня такое уже выстреливало 😳.
А если ты счастливый пользователь Cycle ORM, то я рекомендую вообще закрывать конструкторы сущностей (делать пустой приватный конструктор) и вместо этого писать фабрики.
👍1
Статистические расчёты на временном интервале должны учитывать недостающие данные. Вместо того чтобы заполнять недостающие записи в приложении, можно изменить запрос, чтобы делать это напрямую.
Результаты некоторых статистических расчётов будут иметь пропуски, поскольку информация за конкретные дни не сохранялась. Но вместо того, чтобы заполнять эти пустоты кодом приложения, можно перестроить запрос к базе данных: В качестве источника для присоединения к статистическим данным создаётся последовательность значений без пропусков. Для PostgreSQL для создания последовательности можно использовать функцию
https://www.dev-notes.ru/articles/database/statistical-results-fill-gaps/
Результаты некоторых статистических расчётов будут иметь пропуски, поскольку информация за конкретные дни не сохранялась. Но вместо того, чтобы заполнять эти пустоты кодом приложения, можно перестроить запрос к базе данных: В качестве источника для присоединения к статистическим данным создаётся последовательность значений без пропусков. Для PostgreSQL для создания последовательности можно использовать функцию
generate_series, в то время как для MySQL это необходимо делать вручную с помощью рекурсивного общего табличного выражения (CTE).https://www.dev-notes.ru/articles/database/statistical-results-fill-gaps/
Заметки разработчика
Заполнение пропусков в результатах статистических временных рядов
Статистические расчёты на временном интервале могут иметь пробелы из-за отсутствия данных, которые легко заполняются.
🔥3
Когда мы вступаем на путь кодирования на JavaScript, мы сталкиваемся с множеством концепций, и одной из таких интересных концепций является Композиция Функций.
Представьте себе рецепт — вы смешиваете различные ингредиенты, чтобы получить блюдо. Композиция функций в чем-то похожа — смешивание различных функций для достижения желаемого результата. Давайте разложим её на составляющие и сделаем такой же вкусной, как хорошо приготовленное блюдо!
https://www.dev-notes.ru/articles/javascript/understand-javascript-composition-once-and-for-all/
Представьте себе рецепт — вы смешиваете различные ингредиенты, чтобы получить блюдо. Композиция функций в чем-то похожа — смешивание различных функций для достижения желаемого результата. Давайте разложим её на составляющие и сделаем такой же вкусной, как хорошо приготовленное блюдо!
https://www.dev-notes.ru/articles/javascript/understand-javascript-composition-once-and-for-all/
Заметки разработчика
Понять Композицию в JavaScript раз и навсегда
Когда мы вступаем на путь кодирования на JavaScript, мы сталкиваемся с множеством концепций, и одной из таких интересных концепций является Композиция Функций.
👍1
Расширение традиционной схемы базы данных столбцами NoSQL JSON позволяет сделать схему более понятной. При её использовании база данных будет гарантировать, что все JSON-данные, хранящиеся в столбце, являются валидным JSON. Но можно ли также гарантировать наличие определённых свойств в JSON-документе?
Теперь, когда в вашей базе данных появился JSON-столбец, возникает соблазн хранить данные, которые сложно моделировать, в JSON-столбце. Возможно, вы не захотите отказываться от безопасности определённой схемы, которая так сильно упрощает код вашего приложения. Действительно, JSON-столбец будет проверяться на структурную валидность, на соответствие стандарту SQL. Но можно также получить безопасность схемы-определения для JSON-столбцов, выполнив проверку по правилам JSON Schema.
https://www.dev-notes.ru/articles/database/json-schema-validation/
Теперь, когда в вашей базе данных появился JSON-столбец, возникает соблазн хранить данные, которые сложно моделировать, в JSON-столбце. Возможно, вы не захотите отказываться от безопасности определённой схемы, которая так сильно упрощает код вашего приложения. Действительно, JSON-столбец будет проверяться на структурную валидность, на соответствие стандарту SQL. Но можно также получить безопасность схемы-определения для JSON-столбцов, выполнив проверку по правилам JSON Schema.
https://www.dev-notes.ru/articles/database/json-schema-validation/
Заметки разработчика
Валидация JSON Schema для столбцов
Использование валидации JSON Schema для NoSQL-подобных столбцов с полной безопасностью схемы.
Кодировка символов — важнейший аспект разработки JavaScript как на фронтенде, так и на бэкенде. В этой статье мы рассмотрим основы кодирования символов, его важность и то, как оно влияет на отображение данных на веб-страницах. Также обсудим лучшие практики и типичные ошибки, которые помогут вам избежать проблем с кодировкой в своих проектах.
Как JavaScript разработчик, вы постоянно работаете с текстовыми данными. Однако компьютеры по своей природе не понимают текст так же как люди. Вместо этого текстовые данные должны быть преобразованы в двоичные, которые компьютеры могут понимать и обрабатывать. Кодирование символов — процесс преобразования символов в двоичные данные, позволяющий компьютерам работать с текстом. Кодирование символов важно потому, что оно позволяет хранить и передавать текст в электронном виде. Оно используется в самых разных приложениях — от веб-разработки до хранения и передачи данных. Для того чтобы различные компьютеры и устройства могли работать вместе, они должны использовать одну и ту же схему кодирования. В контексте JavaScript разработки кодирование символов особенно важно, поскольку JavaScript часто используется для манипулирования и отображения текстовых данных в веб-приложениях.
В этой статье мы рассмотрим кодировку символов в JavaScript, включая как Node.js, так и браузерную часть. Мы начнём с введения в кодировку символов и стандарта кодировки символов Unicode, который стал стандартом де-факто для кодирования текстовых данных в современных компьютерах. Далее мы подробно рассмотрим кодировку ASCII, стандарт кодирования, предшествовавший Unicode, и то, как Unicode в значительной степени заменил его. Затем мы рассмотрим кодировку UTF-8, которая является наиболее распространённым стандартом кодирования символов в JavaScript и других современных языках программирования. К концу статьи вы будете иметь полное представление о кодировке символов в JavaScript и вооружитесь знаниями, необходимыми для эффективной работы с текстовыми данными в ваших JavaScript-приложениях. Давайте начнём!
https://www.dev-notes.ru/articles/javascript/character-encoding-cheat-sheet/
Как JavaScript разработчик, вы постоянно работаете с текстовыми данными. Однако компьютеры по своей природе не понимают текст так же как люди. Вместо этого текстовые данные должны быть преобразованы в двоичные, которые компьютеры могут понимать и обрабатывать. Кодирование символов — процесс преобразования символов в двоичные данные, позволяющий компьютерам работать с текстом. Кодирование символов важно потому, что оно позволяет хранить и передавать текст в электронном виде. Оно используется в самых разных приложениях — от веб-разработки до хранения и передачи данных. Для того чтобы различные компьютеры и устройства могли работать вместе, они должны использовать одну и ту же схему кодирования. В контексте JavaScript разработки кодирование символов особенно важно, поскольку JavaScript часто используется для манипулирования и отображения текстовых данных в веб-приложениях.
В этой статье мы рассмотрим кодировку символов в JavaScript, включая как Node.js, так и браузерную часть. Мы начнём с введения в кодировку символов и стандарта кодировки символов Unicode, который стал стандартом де-факто для кодирования текстовых данных в современных компьютерах. Далее мы подробно рассмотрим кодировку ASCII, стандарт кодирования, предшествовавший Unicode, и то, как Unicode в значительной степени заменил его. Затем мы рассмотрим кодировку UTF-8, которая является наиболее распространённым стандартом кодирования символов в JavaScript и других современных языках программирования. К концу статьи вы будете иметь полное представление о кодировке символов в JavaScript и вооружитесь знаниями, необходимыми для эффективной работы с текстовыми данными в ваших JavaScript-приложениях. Давайте начнём!
https://www.dev-notes.ru/articles/javascript/character-encoding-cheat-sheet/
Заметки разработчика
Шпаргалка по кодировке символов для JavaScript разработчиков
В этой статье мы рассмотрим основы кодирования символов, его важность и то, как оно влияет на отображение данных на веб-страницах.
Symfony 6.4 включает новый профилировщик команд, позволяющий собирать информацию о выполняемых командах в процессе их выполнения, чтобы впоследствии можно было отладить возникшие проблемы.
Это первая статья из цикла, рассказывающего о наиболее важных новых возможностях, появившихся в версиях Symfony 6.4 и 7.0.
Symfony 6.4 и Symfony 7.0 выйдут одновременно в конце ноября 2023 года. Согласно процессу релизов Symfony, обе версии будут иметь одинаковые возможности, но Symfony 7.0 не будет включать устаревшие (deprecated) функции.
Профилировщик Symfony — одна из любимых функций Symfony большинства разработчиков. Он собирает всю информацию о HTTP-запросах, чтобы вы могли проанализировать эти данные при отладке проблем. В Symfony 6.4 (и 7.0) мы улучшаем профилировщик, чтобы вы также могли профилировать консольные команды.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-command-profiler/
Это первая статья из цикла, рассказывающего о наиболее важных новых возможностях, появившихся в версиях Symfony 6.4 и 7.0.
Symfony 6.4 и Symfony 7.0 выйдут одновременно в конце ноября 2023 года. Согласно процессу релизов Symfony, обе версии будут иметь одинаковые возможности, но Symfony 7.0 не будет включать устаревшие (deprecated) функции.
Профилировщик Symfony — одна из любимых функций Symfony большинства разработчиков. Он собирает всю информацию о HTTP-запросах, чтобы вы могли проанализировать эти данные при отладке проблем. В Symfony 6.4 (и 7.0) мы улучшаем профилировщик, чтобы вы также могли профилировать консольные команды.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-command-profiler/
Заметки разработчика
Новое в Symfony 6.4: Профилировщик команд
Symfony 6.4 включает новый профилировщик команд, позволяющий собирать информацию о выполняемых командах в процессе их выполнения.
Утечки памяти можно сравнить с утечками воды в доме: хотя небольшие капли поначалу не кажутся большой проблемой, со временем они могут нанести значительный ущерб.
Аналогично, в JavaScript происходит утечка памяти, когда объекты, которые больше не нужны, не освобождаются из памяти. Со временем такое накопление памяти может замедлить работу приложения или даже привести к его аварийному завершению.
https://www.dev-notes.ru/articles/javascript/your-js-app-is-leaking-memory-and-you-dont-know/
Аналогично, в JavaScript происходит утечка памяти, когда объекты, которые больше не нужны, не освобождаются из памяти. Со временем такое накопление памяти может замедлить работу приложения или даже привести к его аварийному завершению.
https://www.dev-notes.ru/articles/javascript/your-js-app-is-leaking-memory-and-you-dont-know/
Заметки разработчика
В Вашем JS-приложении происходит утечка памяти, а Вы об этом не знаете
Утечки памяти как утечки воды в доме: хотя небольшие капли поначалу не кажутся большой проблемой, со временем они могут нанести значительный ущерб.
Регулярные выражения могут быть пугающими, но это не так! Узнайте все необходимое о регулярных выражениях и их использовании в JavaScript.
Строка — это, пожалуй, самый важный тип данных в программировании; все языки программирования и программное обеспечение в мире так или иначе используют строки. Они позволяют человеку легко общаться со сложными программами и машинами. Одна вещь, которая очень поможет вам как программисту, — это понимание того, как использовать строки и манипулировать ими, чтобы создавать программы, которыми смогут эффективно пользоваться пользователи.
Регулярные выражения позволяют разработчикам выполнять широкий спектр задач по обработке текста, таких как проверка данных, манипулирование строками и извлечение текста, в очень сжатой форме. В этой статье вы узнаете все, что нужно знать о регулярных выражениях, и сможете начать эффективно использовать их в своём JavaScript-коде.
https://www.dev-notes.ru/articles/javascript/regular-expressions/
Строка — это, пожалуй, самый важный тип данных в программировании; все языки программирования и программное обеспечение в мире так или иначе используют строки. Они позволяют человеку легко общаться со сложными программами и машинами. Одна вещь, которая очень поможет вам как программисту, — это понимание того, как использовать строки и манипулировать ими, чтобы создавать программы, которыми смогут эффективно пользоваться пользователи.
Регулярные выражения позволяют разработчикам выполнять широкий спектр задач по обработке текста, таких как проверка данных, манипулирование строками и извлечение текста, в очень сжатой форме. В этой статье вы узнаете все, что нужно знать о регулярных выражениях, и сможете начать эффективно использовать их в своём JavaScript-коде.
https://www.dev-notes.ru/articles/javascript/regular-expressions/
Заметки разработчика
Регулярные выражения в JavaScript
Регулярные выражения могут быть пугающими, но это не так! Узнайте все необходимое о регулярных выражениях и их использовании в JavaScript.
Такие браузеры, как Google Chrome, постепенно откажутся от поддержки сторонних файлов cookie, начиная с середины 2024 года. Альтернатива называется CHIPS, что является аббревиатурой "Cookies Having Independent Partitioned State".
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-chips-cookies/
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-chips-cookies/
Заметки разработчика
Новое в Symfony 6.4: CHIPS Cookie
В Symfony 6.4 добавлена поддержка CHIPS — новой функции cookie, которая будет использоваться для замены традиционные cookie сторонних разработчиков.
В Интернете существует множество способов переключения между светлыми и тёмными темами. Мы можем использовать JavaScript или медиа запрос
Медиа запрос
https://www.dev-notes.ru/articles/css/the-new-light-dark-function-to-switch-theme-color-in-css/
prefers-color-scheme в CSS для переключения между темами на основе системных предпочтений пользователя.Медиа запрос
prefers-color-scheme позволяет выполнять действия, применяемые только при включении светлого или тёмного режима в системе пользователя. Например, можно изменить цвет фона страницы на чёрный, если в системе пользователя включён тёмный режим, следующим образом.body {
background-color: white;
}
@media (prefers-color-scheme: dark) {
body {
background-color: black;
}
}
Аналогичным образом можно изменить цвет текста в зависимости от системных предпочтений пользователя.https://www.dev-notes.ru/articles/css/the-new-light-dark-function-to-switch-theme-color-in-css/
Заметки разработчика
Новая CSS функция light-dark() для переключения цвета темы
Мы можем использовать JavaScript или медиазапрос prefers-color-scheme в CSS для переключения между темами на основе системных предпочтений пользователя.
👍1
В Symfony 6.4 реализована новая возможность запуска подпроцессов с той же конфигурацией, что и их родительские PHP-процессы.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-subprocess-handler/
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-subprocess-handler/
Заметки разработчика
Новое в Symfony 6.4 — Обработчик подпроцессов
В Symfony 6.4 появилась возможность запускать подпроцессы с той же конфигурацией, что и их родительские PHP-процессы.
В веб-приложениях могут возникать ситуации, когда необходимо разрешить пользователям удалять данные без их окончательного удаления из базы данных. Например, можно разрешить администратору удалить учётную запись другого пользователя, но при этом сохранить его данные в базе данных на случай ошибки администратора. Это позволит администратору при необходимости восстановить удалённую учётную запись. Именно в этом случае полезно мягкое удаление — soft delete.
В этой статье мы рассмотрим, что такое soft delete, каковы преимущества и недостатки его использования, а также как применять его в приложении Laravel. Мы рассмотрим, как подготовить модель и базу данных к soft delete, как удалять и восстанавливать модели, как удалять модели навсегда и как делать запросы к мягко удаляемым моделям. Затем мы рассмотрим, как тестировать модели с soft delete и как избежать распространённых ошибок при использовании мягкого удаления с помощью DB фасада.
К концу статьи вы должны хорошо понимать, что такое soft delete и как начать использовать его в своих приложениях Laravel.
https://www.dev-notes.ru/articles/eloquent/a-guide-to-soft-deletes-in-laravel/
В этой статье мы рассмотрим, что такое soft delete, каковы преимущества и недостатки его использования, а также как применять его в приложении Laravel. Мы рассмотрим, как подготовить модель и базу данных к soft delete, как удалять и восстанавливать модели, как удалять модели навсегда и как делать запросы к мягко удаляемым моделям. Затем мы рассмотрим, как тестировать модели с soft delete и как избежать распространённых ошибок при использовании мягкого удаления с помощью DB фасада.
К концу статьи вы должны хорошо понимать, что такое soft delete и как начать использовать его в своих приложениях Laravel.
https://www.dev-notes.ru/articles/eloquent/a-guide-to-soft-deletes-in-laravel/
Заметки разработчика
Руководство по Soft Delete в Laravel
Мы расскажем о преимуществах Soft Delete, для чего оно может быть использовано, как реализовать его в приложениях Laravel и о часто встречающихся ошибках.
👍1
В приложениях Symfony система маршрутизации требует, чтобы каждый маршрут имел имя, которое представляет собой произвольную строку, однозначно идентифицирующую маршрут. В дальнейшем это имя используется, например, при генерации URL-адресов на основе определений маршрутов.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-fqcn-based-routes/
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-fqcn-based-routes/
Заметки разработчика
Новое в Symfony 6.4: Маршруты на основе FQCN
Symfony 6.4 определяет псевдонимы маршрутов на основе FQCN контроллера для вызываемых и одномаршрутных контроллеров.
Кодирование и декодирование base64 — это распространённая форма преобразования двоичного содержимого для представления его в виде безопасного для веб-приложений текста. Она широко используется для URL данных, таких как встроенные изображения.
Что происходит, когда вы применяете кодирование и декодирование base64 к строкам в JavaScript? В этой заметке рассматриваются нюансы и типичные "подводные камни", которых следует избегать.
https://www.dev-notes.ru/articles/javascript/nuances-of-base64-encoding/
Что происходит, когда вы применяете кодирование и декодирование base64 к строкам в JavaScript? В этой заметке рассматриваются нюансы и типичные "подводные камни", которых следует избегать.
https://www.dev-notes.ru/articles/javascript/nuances-of-base64-encoding/
Заметки разработчика
Нюансы base64-кодирования строк в JavaScript
Понимание и предотвращение распространённых проблем при применении кодирования и декодирования base64 к строкам.
👍1