Асинхронный конечный автомат с Symfony Workflows
Статья описывает применение Symfony Workflow компонента для управления сложной бизнес-логикой, используя концепцию конечного автомата (finite-state machine). Рассматривается использование компонента на примере рабочего процесса создания и обработки заказа, который включает этапы создания заказа, отправки его в службу заказов, отправки на электронную почту пользователю и отметки заказа как «отправленного» в базе данных.
Здесь предлагается подход, при котором каждый этап бизнес-процесса разбивается на отдельные транзакции конечного автомата. Эти транзакции выполняются транзакционно, что обеспечивает надежность и целостность данных. Если одна из транзакций завершается неудачно, предусмотрена возможность повторного выполнения позже.
Применение событий и подписчиков позволяет управлять процессом и обрабатывать каждую транзакцию транзакционно, что обеспечивает надежность и отказоустойчивость системы.
Также здесь рассматривается сценарий сбоя в работе, описывая методы обработки ошибок и возможности повторного запуска процесса после временных сбоев.
Статья описывает применение Symfony Workflow компонента для управления сложной бизнес-логикой, используя концепцию конечного автомата (finite-state machine). Рассматривается использование компонента на примере рабочего процесса создания и обработки заказа, который включает этапы создания заказа, отправки его в службу заказов, отправки на электронную почту пользователю и отметки заказа как «отправленного» в базе данных.
Здесь предлагается подход, при котором каждый этап бизнес-процесса разбивается на отдельные транзакции конечного автомата. Эти транзакции выполняются транзакционно, что обеспечивает надежность и целостность данных. Если одна из транзакций завершается неудачно, предусмотрена возможность повторного выполнения позже.
Применение событий и подписчиков позволяет управлять процессом и обрабатывать каждую транзакцию транзакционно, что обеспечивает надежность и отказоустойчивость системы.
Также здесь рассматривается сценарий сбоя в работе, описывая методы обработки ошибок и возможности повторного запуска процесса после временных сбоев.
DEV Community
Asynchronous state machine with Symfony Workflows
A finite-state machine is an abstract machine that can be in exactly one of states. The Symfony...
❤10🔥3🤔2
Механизмы безопасности в Laravel
В Laravel существуют различные механизмы безопасности, которые часто не получают достаточного внимания.
Здесь рассматриваются следующие механизмы безопасности:
1️⃣Предотвращение проблемы N+1.
2️⃣Защита от частично гидрированных моделей.
3️⃣Защита от опечаток в атрибутах и переименованных столбцах.
4️⃣Защита от массового присвоения.
5️⃣Строгость модели.
6️⃣Принудительное наложение полиморфного отображения.
7️⃣Мониторинг долгих событий.
Каждый из этих механизмов обсуждается в контексте его конфигурации и советов по тому, как и когда его использовать.
В Laravel существуют различные механизмы безопасности, которые часто не получают достаточного внимания.
Здесь рассматриваются следующие механизмы безопасности:
1️⃣Предотвращение проблемы N+1.
2️⃣Защита от частично гидрированных моделей.
3️⃣Защита от опечаток в атрибутах и переименованных столбцах.
4️⃣Защита от массового присвоения.
5️⃣Строгость модели.
6️⃣Принудительное наложение полиморфного отображения.
7️⃣Мониторинг долгих событий.
Каждый из этих механизмов обсуждается в контексте его конфигурации и советов по тому, как и когда его использовать.
Хабр
Механизмы безопасности в Laravel
Laravel - это веб-фреймворк на PHP с встроенной поддержкой практически всего, что нужно современным приложениям. Но мы не будем рассматривать все эти функции здесь. Вместо этого мы рассмотрим...
👍9❤4🌚1
💬 Оцените свой профессиональный рост за последний год
❤️ — сильно вырос как специалист
👍 — не заметил сильного роста, всё стабильно
🤔 — есть ощущение, что я даже кое-что стал забывать
#интерактив
❤️ — сильно вырос как специалист
👍 — не заметил сильного роста, всё стабильно
🤔 — есть ощущение, что я даже кое-что стал забывать
#интерактив
❤76🤔55👍53🔥2
Хранение классов с настраиваемыми параметрами в базе данных
Статья обсуждает проблему хранения абстракций определенных классов в базе данных, совместно с конфигурируемыми пользовательскими входными данными, для последующего создания экземпляров соответствующих классов с правильными параметрами. Начинается с рассмотрения первоначального подхода через сериализацию, но выявляет недостатки, такие как сложность обновления параметров и жестко закодированное пространство имен.
Далее предлагается улучшенный подход, основанный на хранении только имени класса и JSON-закодированного массива параметров, а также использовании статического метода создания для инициализации экземпляров классов с правильными параметрами. Для разрешения пространства имен используются перечисления (enums). Данные хранятся в столбце JSON базы данных, и для их извлечения используется метод модели. В конце автор обсуждает возможные альтернативные подходы и признает, что может быть затрачено слишком много времени на решение проблемы, но находит свое решение достаточно удовлетворительным.
Статья обсуждает проблему хранения абстракций определенных классов в базе данных, совместно с конфигурируемыми пользовательскими входными данными, для последующего создания экземпляров соответствующих классов с правильными параметрами. Начинается с рассмотрения первоначального подхода через сериализацию, но выявляет недостатки, такие как сложность обновления параметров и жестко закодированное пространство имен.
Далее предлагается улучшенный подход, основанный на хранении только имени класса и JSON-закодированного массива параметров, а также использовании статического метода создания для инициализации экземпляров классов с правильными параметрами. Для разрешения пространства имен используются перечисления (enums). Данные хранятся в столбце JSON базы данных, и для их извлечения используется метод модели. В конце автор обсуждает возможные альтернативные подходы и признает, что может быть затрачено слишком много времени на решение проблемы, но находит свое решение достаточно удовлетворительным.
DEV Community
Storing classes with user configurable parameters in the database (with Laravel)
In a current Laravel-based software project I'm developing, I was confronted with a small challenge...
👍3❤1🤔1
#дайджест новостей по PHP за неделю:
🔎Вышел PHP 8.2.16 — Это релиз с исправлением ошибок. Всем пользователям PHP 8.2 рекомендуется выполнить обновление до этой версии.
🔎Выпущен PHP 8.3.3 — Аналогично, это баг-фикс, и всем пользователям 8.3 также рекомендуется выполнить обновление
🔎Неделя Symfony № 894 (12–18 февраля 2024 г.)
🔎Новые приложения Laravel 11 включают точку проверки работоспособности — В рамках выпуска Laravel 11 новые приложения включают конечную точку работоспособности/работы. Этот маршрут определяется в новом файле bootstrap/app.php путем передачи параметра Health, который по умолчанию определен в скелете Laravel 11.
🔎Потоковые ответы JSON добавлены в Laravel 10.43 — Команда Laravel выпустила версию 10.43 с поддержкой потоковых ответов JSON, передачей имени класса для регистрации глобальной области Eloquent, новым методом Eloquent InsertOrIgnoreUsing и многим другим.
🔎Вышел PHP 8.2.16 — Это релиз с исправлением ошибок. Всем пользователям PHP 8.2 рекомендуется выполнить обновление до этой версии.
🔎Выпущен PHP 8.3.3 — Аналогично, это баг-фикс, и всем пользователям 8.3 также рекомендуется выполнить обновление
🔎Неделя Symfony № 894 (12–18 февраля 2024 г.)
🔎Новые приложения Laravel 11 включают точку проверки работоспособности — В рамках выпуска Laravel 11 новые приложения включают конечную точку работоспособности/работы. Этот маршрут определяется в новом файле bootstrap/app.php путем передачи параметра Health, который по умолчанию определен в скелете Laravel 11.
🔎Потоковые ответы JSON добавлены в Laravel 10.43 — Команда Laravel выпустила версию 10.43 с поддержкой потоковых ответов JSON, передачей имени класса для регистрации глобальной области Eloquent, новым методом Eloquent InsertOrIgnoreUsing и многим другим.
🔥6🎉2
Практическое руководство по более чистым контроллерам Laravel: использование возможностей средств доступа(accessors) и мутаторов
Очень важно использовать контроллеры в Laravel в соответствии с архитектурным шаблоном Model-View-Controller (MVC). Основная задача контроллеров в Laravel — управление HTTP-запросами пользователей, рендеринг представлений и взаимодействие с моделями приложения для модификации данных. Поддержание MVC-шаблона при разработке приложения на Laravel обеспечивает поддержку кода и его повторное использование.
Контроллеры в Laravel должны быть сконцентрированы на обработке HTTP-запросов и управлении потоком приложения, в то время как бизнес-логика должна быть размещена в модели или сервисах для более чистого и организованного кода.
🚀 Практический пример использования контроллера:
Приводится практический пример использования контроллера в Laravel, сравнивая его с ролью Corporate Controller в отрасли бухгалтерии. Контроллер в Laravel играет ключевую роль в управлении потоком и обработкой запросов в приложении, аналогично тому, как Corporate Controller управляет финансовыми аспектами.
🧩 Использование accessors и mutators:
Accessors используются для форматирования атрибутов при получении из базы данных.
Mutators используются для модификации атрибутов перед сохранением в базе данных.
🌟 Преимущества использования accessors и mutators:
Поддержка и читаемость кода.
Повторное использование и тестирование кода.
Очень важно использовать контроллеры в Laravel в соответствии с архитектурным шаблоном Model-View-Controller (MVC). Основная задача контроллеров в Laravel — управление HTTP-запросами пользователей, рендеринг представлений и взаимодействие с моделями приложения для модификации данных. Поддержание MVC-шаблона при разработке приложения на Laravel обеспечивает поддержку кода и его повторное использование.
Контроллеры в Laravel должны быть сконцентрированы на обработке HTTP-запросов и управлении потоком приложения, в то время как бизнес-логика должна быть размещена в модели или сервисах для более чистого и организованного кода.
🚀 Практический пример использования контроллера:
Приводится практический пример использования контроллера в Laravel, сравнивая его с ролью Corporate Controller в отрасли бухгалтерии. Контроллер в Laravel играет ключевую роль в управлении потоком и обработкой запросов в приложении, аналогично тому, как Corporate Controller управляет финансовыми аспектами.
🧩 Использование accessors и mutators:
Accessors используются для форматирования атрибутов при получении из базы данных.
Mutators используются для модификации атрибутов перед сохранением в базе данных.
🌟 Преимущества использования accessors и mutators:
Поддержка и читаемость кода.
Повторное использование и тестирование кода.
DEV Community
Practical Guide to Cleaner Laravel Controllers: Harnessing the Power of Accessors and Mutators
Laravel uses a Model-View-Controller architectural pattern and controllers play an important role....
❤3👍3🥰1🎉1
Улучшение кода без споров и цитирования известных практик
Не секрет, что при формировании новой команды руководители (Team Leader, Tech Leader) сталкиваются с проблемой формирования единого стиля написания программ, так как все члены команды новые, и у каждого из них свой подход к организации кода и выбору используемой практики. Как правило, в большинстве случаев это приводит к длинным диспутам на ревью, которые в итоге перетекают в различные толкования известных практик, таких как SOLID, KISS, DRY, и т.д. Принципы использования этих практик довольно размыты и, при должном упорстве, легко найти парадокс, когда одна из них противоречит другой.
Здесь предлагается подход, позволяющий избежать большинство подобных спорных ситуаций. Более того, каждый разработчик на практике (и без замечаний со стороны руководителя) будет понимать, что именно он делает неправильно и как можно сделать лучше.
Не секрет, что при формировании новой команды руководители (Team Leader, Tech Leader) сталкиваются с проблемой формирования единого стиля написания программ, так как все члены команды новые, и у каждого из них свой подход к организации кода и выбору используемой практики. Как правило, в большинстве случаев это приводит к длинным диспутам на ревью, которые в итоге перетекают в различные толкования известных практик, таких как SOLID, KISS, DRY, и т.д. Принципы использования этих практик довольно размыты и, при должном упорстве, легко найти парадокс, когда одна из них противоречит другой.
Здесь предлагается подход, позволяющий избежать большинство подобных спорных ситуаций. Более того, каждый разработчик на практике (и без замечаний со стороны руководителя) будет понимать, что именно он делает неправильно и как можно сделать лучше.
Хабр
Улучшение кода без споров и цитирования известных практик
Не секрет, что при формировании новой команды руководители (Team Leader, Tech Leader) сталкиваются с проблемой формирования единого стиля написания программ, так как все члены команды новые, и у...
👍4🥱3❤1🥰1
Random by Valorin
Простой вспомогательный пакет для генерации криптографически безопасных случайных значений.
Простой вспомогательный пакет для генерации криптографически безопасных случайных значений.
GitHub
GitHub - valorin/random at madewithlaravel.com
Random is a simple helper package designed to make it easy to generate a range of different cryptographically secure random values. - GitHub - valorin/random at madewithlaravel.com
👍4😁2❤1
Что такое функции soundex() и metaphone() в PHP?
Функция soundex():
Функция soundex() вычисляет звуковой индекс строки.
Soundex — это фонетический алгоритм, который назначает код слову на основе его произношения.
Он применяется преимущественно для поиска слов, которые звучат похоже, но могут быть написаны по-разному.
Функция сокращает слова до четырехсимвольного кода, который представляет его звучание.
Это полезно для задач, таких как поиск имен, которые звучат похоже, но имеют разные написания.
Функция metaphone():
Функция metaphone() вычисляет метафонический ключ строки.
Metaphone — это еще один фонетический алгоритм, но он более продвинут, чем Soundex.
Он преобразует слово в фонетический ключ, состоящий из одной или нескольких букв.
В отличие от Soundex, Metaphone учитывает вариации произношения и более эффективен для английских слов.
#вопросы_с_собеседований
Функция soundex():
Функция soundex() вычисляет звуковой индекс строки.
Soundex — это фонетический алгоритм, который назначает код слову на основе его произношения.
Он применяется преимущественно для поиска слов, которые звучат похоже, но могут быть написаны по-разному.
Функция сокращает слова до четырехсимвольного кода, который представляет его звучание.
Это полезно для задач, таких как поиск имен, которые звучат похоже, но имеют разные написания.
Функция metaphone():
Функция metaphone() вычисляет метафонический ключ строки.
Metaphone — это еще один фонетический алгоритм, но он более продвинут, чем Soundex.
Он преобразует слово в фонетический ключ, состоящий из одной или нескольких букв.
В отличие от Soundex, Metaphone учитывает вариации произношения и более эффективен для английских слов.
#вопросы_с_собеседований
👍22🤔11❤1
DTO vs VO в PHP
DTO (Data Transfer Object) и VO (Value Object) — это два шаблона проектирования, которые полезны для улучшения качества кода и его читаемости в PHP.
DTO представляют собой объекты, содержащие данные и определяющие структуру этих данных. Они полезны для передачи данных между различными частями приложения, например, при обработке HTTP-запросов.
VO представляют собой объекты, которые обеспечивают гарантию корректности данных, содержащихся в них. Они полезны для представления значений, специфичных для домена приложения, и применения бизнес-правил.
DTO используются там, где данные входят или выходят из приложения, например, при обработке HTTP-запросов или ответов на них.
VO используются для проверки корректности значений и применения к ним бизнес-правил, например, для представления цен или email-адресов.
Оба шаблона помогают сделать код более чистым, понятным и уменьшить вероятность ошибок.
DTO (Data Transfer Object) и VO (Value Object) — это два шаблона проектирования, которые полезны для улучшения качества кода и его читаемости в PHP.
DTO представляют собой объекты, содержащие данные и определяющие структуру этих данных. Они полезны для передачи данных между различными частями приложения, например, при обработке HTTP-запросов.
VO представляют собой объекты, которые обеспечивают гарантию корректности данных, содержащихся в них. Они полезны для представления значений, специфичных для домена приложения, и применения бизнес-правил.
DTO используются там, где данные входят или выходят из приложения, например, при обработке HTTP-запросов или ответов на них.
VO используются для проверки корректности значений и применения к ним бизнес-правил, например, для представления цен или email-адресов.
Оба шаблона помогают сделать код более чистым, понятным и уменьшить вероятность ошибок.
DEV Community
DTO vs VO in PHP
Data Transfer Objects (DTOs) and Value Objects (VOs) are particularly useful when working with...
👍15❤1
Как ошибки проектирования при разработке на Symfony могут привести к перерасходу ресурсов и замедлению работы системы
Здесь обсуждаются ошибки, допущенные на начальных этапах создания проекта электронной коммерции, и способы их исправления, что привело к значительному снижению потребления памяти и нагрузки на дисковую систему.
1️⃣Первая ошибка заключалась в том, что при хранении данных сессий пользователей в Redis, объекты сессий содержали в себе много лишней информации, включая все выданные токены доступа. Это привело к избыточному потреблению памяти и увеличению нагрузки на дисковую систему.
2️⃣Вторая ошибка заключалась в том, что не была реализована функция удаления старых токенов доступа, что привело к накоплению большого количества устаревших данных в базе данных.
3️⃣Третья ошибка состояла в том, что не был активирован режим без сохранения состояния для одного из API, что привело к ненужному созданию новых сессий при каждом запросе и увеличению нагрузки на систему.
Для решения проблем были предприняты следующие шаги:
🟢Переписана система выдачи токенов доступа, чтобы в базе данных хранились только актуальные токены.
🟢Убрана связь между токенами доступа и объектами пользователей.
🟢Активирован режим без сохранения состояния для соответствующего API.
Кроме того, из этого опыта можно выделить несколько уроков, включая необходимость наличия системы мониторинга, аккуратность при разработке под давлением сжатых сроков, и важность командной работы для предотвращения ошибок.
Здесь обсуждаются ошибки, допущенные на начальных этапах создания проекта электронной коммерции, и способы их исправления, что привело к значительному снижению потребления памяти и нагрузки на дисковую систему.
1️⃣Первая ошибка заключалась в том, что при хранении данных сессий пользователей в Redis, объекты сессий содержали в себе много лишней информации, включая все выданные токены доступа. Это привело к избыточному потреблению памяти и увеличению нагрузки на дисковую систему.
2️⃣Вторая ошибка заключалась в том, что не была реализована функция удаления старых токенов доступа, что привело к накоплению большого количества устаревших данных в базе данных.
3️⃣Третья ошибка состояла в том, что не был активирован режим без сохранения состояния для одного из API, что привело к ненужному созданию новых сессий при каждом запросе и увеличению нагрузки на систему.
Для решения проблем были предприняты следующие шаги:
🟢Переписана система выдачи токенов доступа, чтобы в базе данных хранились только актуальные токены.
🟢Убрана связь между токенами доступа и объектами пользователей.
🟢Активирован режим без сохранения состояния для соответствующего API.
Кроме того, из этого опыта можно выделить несколько уроков, включая необходимость наличия системы мониторинга, аккуратность при разработке под давлением сжатых сроков, и важность командной работы для предотвращения ошибок.
Хабр
Как ошибки проектирования при разработке на Symfony могут привести к перерасходу ресурсов и замедлению работы системы
Сегодня хочу рассказать о том, какие ошибки можно допустить на начальном этапе создания e-commerce проекта в проектировании модели данных и в разработке веб-приложения. И, самое главное, как эти...
😁4🌚4👍3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🎉1
Использование интерфейсов в сторонних пакетах
Здесь читателям предлагается использовать интерфейсы вместо конкретных классов или перечислений для создания более гибких и расширяемых API в PHP. Начиная с введения перечислений в PHP 8.1, они могут быть удобны для представления ограниченного набора опций. Однако, если требуется более гибкий и расширяемый подход, рекомендуется использовать интерфейсы.
Преимущества такого подхода заключается в loose coupling между компонентами и возможности расширения функционала как для разработчиков пакета, так и для пользователей.
Здесь читателям предлагается использовать интерфейсы вместо конкретных классов или перечислений для создания более гибких и расширяемых API в PHP. Начиная с введения перечислений в PHP 8.1, они могут быть удобны для представления ограниченного набора опций. Однако, если требуется более гибкий и расширяемый подход, рекомендуется использовать интерфейсы.
Преимущества такого подхода заключается в loose coupling между компонентами и возможности расширения функционала как для разработчиков пакета, так и для пользователей.
Svenluijten
Using interfaces in third-party packages
How to effectively use interfaces to make your PHP package easier to work with and more customizable than ever before.
👍3
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии PHP разработчиков уровня Junior
▪️Веб-разработчик
Тула. ИнтерЛабс — интернет-маркетинговое агентство полного цикла
Подробнее
▪️Стажер-разработчик PHP
Ульяновск. FrameWork Team — аутсорс-разработка
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP разработчик
Москва. GeekChain — разработка ПО
Подробнее
▪️PHP разработчик
Москва. Мой Самокат — сервис, специализирующийся на аренде девайсов по системе подписки
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Senior PHP developer
Москва. СЕЙЧАС — информационные технологии, системная интеграция
Подробнее
▪️Старший PHP-программист
Москва. Автоспот — сервис продажи авто
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️Веб-разработчик
Тула. ИнтерЛабс — интернет-маркетинговое агентство полного цикла
Подробнее
▪️Стажер-разработчик PHP
Ульяновск. FrameWork Team — аутсорс-разработка
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP разработчик
Москва. GeekChain — разработка ПО
Подробнее
▪️PHP разработчик
Москва. Мой Самокат — сервис, специализирующийся на аренде девайсов по системе подписки
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Senior PHP developer
Москва. СЕЙЧАС — информационные технологии, системная интеграция
Подробнее
▪️Старший PHP-программист
Москва. Автоспот — сервис продажи авто
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
tula.hh.ru
Вакансия Веб-разработчик (junior) в Туле, работа в компании ИнтерЛабс (вакансия в архиве c 7 марта 2024)
Зарплата: от 50000 ₽. Тула. Требуемый опыт: не требуется. Полная занятость. Дата публикации: 04.03.2024.
😁10❤2🤔1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
В чем разница между функциями «htmlentities» и «htmlspecialchars» в PHP?
В PHP функции «htmlentities()» и «htmlspecialchars()» используются для кодирования HTML-сущностей, но они имеют разные цели:
«htmlspecialchars()»: Эта функция в основном используется для экранирования символов HTML, которые имеют специальное значение в HTML, таких как <, >, &, и «. Она преобразует эти символы в соответствующие HTML-сущности (<, >, &, «). Это часто используется для предотвращения атак XSS (межсайтового скриптинга), гарантируя, что пользовательский ввод отображается «как есть», без интерпретации как HTML.
«htmlentities()»: Эта функция преобразует все применимые символы в соответствующие HTML-сущности. В дополнение к символам, экранируемым «htmlspecialchars()», она также преобразует символы, такие как не-ASCII символы и различные символы. Эта функция часто используется, когда необходимо гарантировать безопасное кодирование всех символов для вывода HTML, особенно при работе с многоязычным контентом.
#вопросы_с_собеседований
В PHP функции «htmlentities()» и «htmlspecialchars()» используются для кодирования HTML-сущностей, но они имеют разные цели:
«htmlspecialchars()»: Эта функция в основном используется для экранирования символов HTML, которые имеют специальное значение в HTML, таких как <, >, &, и «. Она преобразует эти символы в соответствующие HTML-сущности (<, >, &, «). Это часто используется для предотвращения атак XSS (межсайтового скриптинга), гарантируя, что пользовательский ввод отображается «как есть», без интерпретации как HTML.
«htmlentities()»: Эта функция преобразует все применимые символы в соответствующие HTML-сущности. В дополнение к символам, экранируемым «htmlspecialchars()», она также преобразует символы, такие как не-ASCII символы и различные символы. Эта функция часто используется, когда необходимо гарантировать безопасное кодирование всех символов для вывода HTML, особенно при работе с многоязычным контентом.
#вопросы_с_собеседований
❤9😁2
Освоение маршрутов Laravel: комплексное руководство для всех уровней
Это обзор маршрутизации в Laravel для пользователей всех уровней: от новичков до опытных разработчиков. Он начинается с простых концепций, таких как базовая маршрутизация и передача параметров, затем переходит к более сложным концепциям, таким как именованные маршруты, группы маршрутов и промежуточное программное обеспечение.
Далее представляются более продвинутые техники, такие как привязка модели к маршруту, контроллеры ресурсов и API-маршруты.
В целом, автор подчеркивает важность понимания маршрутизации в Laravel для создания эффективных и динамичных веб-приложений, а также призывает читателей экспериментировать с изученными концепциями для улучшения навыков в разработке на Laravel.
Это обзор маршрутизации в Laravel для пользователей всех уровней: от новичков до опытных разработчиков. Он начинается с простых концепций, таких как базовая маршрутизация и передача параметров, затем переходит к более сложным концепциям, таким как именованные маршруты, группы маршрутов и промежуточное программное обеспечение.
Далее представляются более продвинутые техники, такие как привязка модели к маршруту, контроллеры ресурсов и API-маршруты.
В целом, автор подчеркивает важность понимания маршрутизации в Laravel для создания эффективных и динамичных веб-приложений, а также призывает читателей экспериментировать с изученными концепциями для улучшения навыков в разработке на Laravel.
😁7