В чем разница между функциями «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
Laravel 11. Что нового?
Команда Тейлора скоро выпустит новую мажорную версию фреймворка. Laravel 11 продолжает улучшения, начатые в Laravel 10.x, представляя упрощенную структуру приложения, ограничение скорости в секунду, маршруты проверки состояния приложения, элегантную ротацию ключа шифрования, улучшения в тестировании очередей, транспорт отправки почты, интеграцию с Prompt валидатором, новые команды Artisan и другие нововведения. Кроме того, был представлен Laravel Reverb — масштабируемый сервер WebSocket, обеспечивающий надежную работу в реальном времени.
Основные изменения в Laravel 11:
🔴Требуется PHP 8.2.
🟠Упрощенная структура приложения с новым файлом bootstrap/app.php для настройки маршрутизации, промежуточного ПО, обработки исключений и т.д.
🟡Вместо пяти сервис-провайдеров в Laravel 11 по умолчанию только один — AppServiceProvider, объединяющий функционал предыдущих.
🟢Расширены возможности использования переменных окружения для конфигурации фреймворка.
⚪Удалены файлы маршрутов api.php и channels.php, но их можно создать при необходимости.
🟣Мидлвары теперь настраиваются в bootstrap/app.php, что уменьшает объем приложения.
🔵Планировщик задач теперь настраивается непосредственно в файле routes/console.php.
🔴Обработка исключений также настраивается в bootstrap/app.php.
🟠По умолчанию новые приложения Laravel используют SQLite для хранения данных, что упрощает начало работы.
🟡Laravel Reverb предоставляет быструю и масштабируемую работу с WebSocket, а также поддерживает горизонтальное масштабирование с использованием Redis.
🟢Добавлена поддержка ограничения скорости в секунду.
⚪Введены маршруты проверки состояния приложения.
🟣Добавлена элегантная ротация ключей шифрования.
🔵Добавлены новые команды Artisan для быстрого создания классов, интерфейсов и трейтов.
Команда Тейлора скоро выпустит новую мажорную версию фреймворка. Laravel 11 продолжает улучшения, начатые в Laravel 10.x, представляя упрощенную структуру приложения, ограничение скорости в секунду, маршруты проверки состояния приложения, элегантную ротацию ключа шифрования, улучшения в тестировании очередей, транспорт отправки почты, интеграцию с Prompt валидатором, новые команды Artisan и другие нововведения. Кроме того, был представлен Laravel Reverb — масштабируемый сервер WebSocket, обеспечивающий надежную работу в реальном времени.
Основные изменения в Laravel 11:
🔴Требуется PHP 8.2.
🟠Упрощенная структура приложения с новым файлом bootstrap/app.php для настройки маршрутизации, промежуточного ПО, обработки исключений и т.д.
🟡Вместо пяти сервис-провайдеров в Laravel 11 по умолчанию только один — AppServiceProvider, объединяющий функционал предыдущих.
🟢Расширены возможности использования переменных окружения для конфигурации фреймворка.
⚪Удалены файлы маршрутов api.php и channels.php, но их можно создать при необходимости.
🟣Мидлвары теперь настраиваются в bootstrap/app.php, что уменьшает объем приложения.
🔵Планировщик задач теперь настраивается непосредственно в файле routes/console.php.
🔴Обработка исключений также настраивается в bootstrap/app.php.
🟠По умолчанию новые приложения Laravel используют SQLite для хранения данных, что упрощает начало работы.
🟡Laravel Reverb предоставляет быструю и масштабируемую работу с WebSocket, а также поддерживает горизонтальное масштабирование с использованием Redis.
🟢Добавлена поддержка ограничения скорости в секунду.
⚪Введены маршруты проверки состояния приложения.
🟣Добавлена элегантная ротация ключей шифрования.
🔵Добавлены новые команды Artisan для быстрого создания классов, интерфейсов и трейтов.
👍20🔥10😁5🥱4❤2
💬 Как вы относитесь к парному программированию? Это то самое, при котором два разраба работают вместе над одной задачей, сидя за одним рабочим местом.
👍18🥱7🌚5😁1
Еще один #дайджест новостей по PHP за неделю:
🔎Выпущена версия cakephp phpstan 3.1.0! — много изменений в работе с таблицами и многое другое!
🔎Выпущена Symfony 7.0.4 — Вот список наиболее важных изменений с версии 7.0.3.
🔎Неделя Symfony № 895 (19–25 февраля 2024 г.)
🔎Выпущена версия cakephp phpstan 3.1.0! — много изменений в работе с таблицами и многое другое!
🔎Выпущена Symfony 7.0.4 — Вот список наиболее важных изменений с версии 7.0.3.
🔎Неделя Symfony № 895 (19–25 февраля 2024 г.)
👍5
Мечты о строго и статически типизированном PHP
Сегодня мы рассмотрим важный вопрос. Это возможность превращения PHP из динамически типизированного языка в статически типизированный с помощью введения различных типовых объявлений. С момента выпуска PHP 7.0 в декабре 2015 года в языке появились новые функции для работы с типами данных, такие как типизация параметров функций, возвращаемые типы и свойства классов.
Здесь изложены идеи по дальнейшему усовершенствованию типовой системы PHP. Предлагается внедрение типизации переменных, поддержку типизированных массивов и введение псевдонимов типов для улучшения читаемости и поддержки кода.
Кроме того, обсуждается вопрос о том, каким образом внедрить эти функции, предлагаются различные варианты синтаксиса для реализации типизации переменных и массивов, а также предлагается использование псевдонимов типов для упрощения работы с повторяющимися типами данных в коде.
Сегодня мы рассмотрим важный вопрос. Это возможность превращения PHP из динамически типизированного языка в статически типизированный с помощью введения различных типовых объявлений. С момента выпуска PHP 7.0 в декабре 2015 года в языке появились новые функции для работы с типами данных, такие как типизация параметров функций, возвращаемые типы и свойства классов.
Здесь изложены идеи по дальнейшему усовершенствованию типовой системы PHP. Предлагается внедрение типизации переменных, поддержку типизированных массивов и введение псевдонимов типов для улучшения читаемости и поддержки кода.
Кроме того, обсуждается вопрос о том, каким образом внедрить эти функции, предлагаются различные варианты синтаксиса для реализации типизации переменных и массивов, а также предлагается использование псевдонимов типов для упрощения работы с повторяющимися типами данных в коде.
👍5
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
🧿 Знания — сила! Что должен изучить каждый программист?
❗Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
‼️ Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Опросик
❗Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
‼️ Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Опросик
😁7🤔1
Практический пример декомпозиции монолитного PHP приложения
Декомпозиция монолита — не редкая проблема. Это связано с тем, что на ранних стадиях развития любого стартапа накапливается так называемый decision debt — выбранная архитектура является оптимальной для быстрой разработки и экспериментирования, но не для зрелого продукта.
❗«Decision debt» относится к ситуации, когда команда разработчиков откладывает принятие решения по определенным важным аспектам проекта или архитектурным решениям. Этот долг накапливается, когда разработчики временно откладывают принятие решения, чтобы сосредоточиться на разработке продукта в срок или избежать затрат времени на принятие сложных решений.
Учитывая популярность проблемы, существует множество книг и статей о подходах к её решению, но автор считает, что есть недостаток практических примеров. Поэтому, в этой статье он решил сосредоточиться на технических деталях, используя в качестве примера приложение, написанное на PHP и фреймворке Symfony.
Декомпозиция монолита — не редкая проблема. Это связано с тем, что на ранних стадиях развития любого стартапа накапливается так называемый decision debt — выбранная архитектура является оптимальной для быстрой разработки и экспериментирования, но не для зрелого продукта.
❗«Decision debt» относится к ситуации, когда команда разработчиков откладывает принятие решения по определенным важным аспектам проекта или архитектурным решениям. Этот долг накапливается, когда разработчики временно откладывают принятие решения, чтобы сосредоточиться на разработке продукта в срок или избежать затрат времени на принятие сложных решений.
Учитывая популярность проблемы, существует множество книг и статей о подходах к её решению, но автор считает, что есть недостаток практических примеров. Поэтому, в этой статье он решил сосредоточиться на технических деталях, используя в качестве примера приложение, написанное на PHP и фреймворке Symfony.
Хабр
Практический пример декомпозиции монолитного PHP приложения
Введение Стоит отметить, что сам по себе монолит не является антипаттерном и может отлично работать (и часто работает) при определенных условиях, обычно - когда он выбран осознанно. Но чаще всего...
👍7❤1
ИИ для PHP: как настроить подсказки ИИ для улучшения тестов
В нашем прошлом посте мы рассмотрели, как JetBrains AI Assistant может автоматически создавать модульные тесты. Генерируя скучный шаблонный код, мы можем сразу перейти к более интересной части создания тестов.
Здесь рассказывается про то, как можно улучшить ваши промты для написания более надежных тестов
AI Assistant может быть точнее в предсказании желаемого кода и дает пользователю возможность дополнительно специфицировать запросы с помощью кнопки «Specify».
Также здесь подчеркивается, что целью не является генерация идеального кода, а скорее упрощение скучных и рутинных задач, чтобы программисты могли сосредоточиться на более интересных частях разработки.
В нашем прошлом посте мы рассмотрели, как JetBrains AI Assistant может автоматически создавать модульные тесты. Генерируя скучный шаблонный код, мы можем сразу перейти к более интересной части создания тестов.
Здесь рассказывается про то, как можно улучшить ваши промты для написания более надежных тестов
AI Assistant может быть точнее в предсказании желаемого кода и дает пользователю возможность дополнительно специфицировать запросы с помощью кнопки «Specify».
Также здесь подчеркивается, что целью не является генерация идеального кода, а скорее упрощение скучных и рутинных задач, чтобы программисты могли сосредоточиться на более интересных частях разработки.
Telegram
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
ИИ для PHP: как автоматизировать модульное тестирование с помощью AI Assistant?
JetBrains предлагает использовать искусственный интеллект для автоматизации процесса тестирования, представляя новый инструмент JetBrains AI Assistant. С помощью этого инструмента…
JetBrains предлагает использовать искусственный интеллект для автоматизации процесса тестирования, представляя новый инструмент JetBrains AI Assistant. С помощью этого инструмента…
🥱4👍2❤1
Какие способы оптимизации производительности баз данных знаете?
Существует несколько основных способов оптимизации баз данных:
Индексирование: Убедитесь, что ваша база данных имеет правильные индексы для часто используемых запросов. Индексы позволяют ускорить поиск данных.
Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных.
Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached.
Ограничение объема данных: Загружайте только те данные, которые действительно нужны. Используйте LIMIT и OFFSET при запросах, чтобы извлекать только необходимое количество записей.
Оптимизация структуры таблиц: Проведите анализ структуры таблиц и убедитесь, что она оптимально сбалансирована для ваших запросов. Иногда изменение типов данных, уменьшение размера полей или нормализация таблиц может улучшить производительность.
Использование транзакций: Используйте транзакции для группировки нескольких операций в одну единицу работы. Это помогает уменьшить накладные расходы на управление транзакциями и обеспечить целостность данных.
Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных.
Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.
#вопросы_с_собеседований
Существует несколько основных способов оптимизации баз данных:
Индексирование: Убедитесь, что ваша база данных имеет правильные индексы для часто используемых запросов. Индексы позволяют ускорить поиск данных.
Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных.
Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached.
Ограничение объема данных: Загружайте только те данные, которые действительно нужны. Используйте LIMIT и OFFSET при запросах, чтобы извлекать только необходимое количество записей.
Оптимизация структуры таблиц: Проведите анализ структуры таблиц и убедитесь, что она оптимально сбалансирована для ваших запросов. Иногда изменение типов данных, уменьшение размера полей или нормализация таблиц может улучшить производительность.
Использование транзакций: Используйте транзакции для группировки нескольких операций в одну единицу работы. Это помогает уменьшить накладные расходы на управление транзакциями и обеспечить целостность данных.
Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных.
Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.
#вопросы_с_собеседований
👍14🌚5❤1
Пиши код в Laravel как senior
🚀Здесь рассматриваются ключевые практики и принципы разработки во фреймворке Laravel. Начинается всё с обзора основ Laravel, 🏛️ включая его архитектуру MVC, ORM Eloquent, шаблонизатор Blade, а также компоненты, такие как миграции, сидеры и промежуточные слои.🛠️
Далее предоставляются примеры ❌«неправильного» и ✅«правильного» кода, демонстрируя, как следовать стандартам и соглашениям Laravel для написания чистого, эффективного и масштабируемого кода.
Также обсуждаются важность принципов DRY и использования сервисов для обработки бизнес-логики, а также предлагает советы по оптимизации и лучшим практикам, таким как использование команд Artisan, миграции базы данных, промежуточные слои и автоматизированное тестирование.
🚀Здесь рассматриваются ключевые практики и принципы разработки во фреймворке Laravel. Начинается всё с обзора основ Laravel, 🏛️ включая его архитектуру MVC, ORM Eloquent, шаблонизатор Blade, а также компоненты, такие как миграции, сидеры и промежуточные слои.🛠️
Далее предоставляются примеры ❌«неправильного» и ✅«правильного» кода, демонстрируя, как следовать стандартам и соглашениям Laravel для написания чистого, эффективного и масштабируемого кода.
Также обсуждаются важность принципов DRY и использования сервисов для обработки бизнес-логики, а также предлагает советы по оптимизации и лучшим практикам, таким как использование команд Artisan, миграции базы данных, промежуточные слои и автоматизированное тестирование.
DEV Community
Writing Code like a Senior Developer in Laravel
In the evolving landscape of web development, Laravel has emerged as one of the prominent PHP...
🥱19👍2👾2🌚1
Chronos for Laravel
Интересный пет-проект, предоставляющий веб-интерфейс для управления командами Laravel в real-time без необходимости лезть в код проекта.
Интересный пет-проект, предоставляющий веб-интерфейс для управления командами Laravel в real-time без необходимости лезть в код проекта.
Хабр
Управляем командами на Laravel
Chronos for Laravel Сегодня я расскажу о небольшом пет-проекте. Реализован он был для собственных нужд и с целью более гибкого управления выполнением команд. На Laravel имеется хорошая база для...
👍6
Создание поддерживаемых PHP-приложений: анализ данных и анализ бизнес-процессов
Здесь обсуждается различие между традиционным подходом CRUD (Create, Read, Update, Delete) к разработке программного обеспечения и более ориентированным на бизнес процесс подходом. В традиционном подходе упор делается на технические аспекты, такие как манипуляции с данными в базе данных, в то время как в бизнес-ориентированном подходе акцент делается на описании поведения системы и ее бизнес-процессов.
Статья указывает на проблемы традиционного подхода, такие как упущение важных аспектов бизнес-процессов, сложность в понимании бизнес-логики для разработчиков и необходимость углубленного понимания предметной области для эффективной разработки.
Далее предлагается использовать более ориентированный на бизнес процесс подход, который позволяет лучше описать и понять бизнес-логику, именуя классы, методы и свойства так, чтобы они отражали бизнес-термины, а не технические детали. Это позволяет разработчикам лучше понимать и описывать бизнес-процессы, а также создавать более читаемый и понятный код.
Здесь обсуждается различие между традиционным подходом CRUD (Create, Read, Update, Delete) к разработке программного обеспечения и более ориентированным на бизнес процесс подходом. В традиционном подходе упор делается на технические аспекты, такие как манипуляции с данными в базе данных, в то время как в бизнес-ориентированном подходе акцент делается на описании поведения системы и ее бизнес-процессов.
Статья указывает на проблемы традиционного подхода, такие как упущение важных аспектов бизнес-процессов, сложность в понимании бизнес-логики для разработчиков и необходимость углубленного понимания предметной области для эффективной разработки.
Далее предлагается использовать более ориентированный на бизнес процесс подход, который позволяет лучше описать и понять бизнес-логику, именуя классы, методы и свойства так, чтобы они отражали бизнес-термины, а не технические детали. Это позволяет разработчикам лучше понимать и описывать бизнес-процессы, а также создавать более читаемый и понятный код.
Davor Minchorov
Building Maintainable PHP Applications: Thinking Data vs Thinking Business Processes
👍2❤1
Forwarded from Proglib.academy | IT-курсы
🪨💧Hard skills и soft skills: что это и как они проверяются на техническом собеседовании
Рассмотрим, что именно представляют из себя эти два типа навыков, а также как их проверяют на технических собеседованиях, и почему современные компании все больше ценят комбинацию обеих категорий навыков при отборе кандидатов.
🔗 Читать статью
Рассмотрим, что именно представляют из себя эти два типа навыков, а также как их проверяют на технических собеседованиях, и почему современные компании все больше ценят комбинацию обеих категорий навыков при отборе кандидатов.
🔗 Читать статью
👏3🎉2🥱1🌚1