Telegram Web
Для чего используется переменная $_REQUEST?

Переменная $_REQUEST является суперглобальным массивом, который используется для сбора данных из HTML-форм или URL-адресов. Это комбинация массивов $_GET, $_POST и $_COOKIE. Собранные данные могут быть параметрами, переданными через методы HTTP GET или POST.

Вот разбор того, что представляет собой каждый из этих методов:

$_GET: Данные, отправленные через строку запроса URL. Они видны всем и имеют ограничение на объем передаваемых данных.

$_POST: Данные, отправленные через HTTP POST-запрос, обычно из HTML-формы с использованием метода POST. Эти данные не видны в URL-адресе и могут передавать больший объем данных по сравнению с $_GET.

$_COOKIE: Данные, хранящиеся в файлах cookie браузера пользователя.

$_REQUEST позволяет получать доступ к данным независимо от того, как они были отправлены, будь то запрос GET (параметры URL), запрос POST (отправка формы) или cookie. Однако полагаться исключительно на $_REQUEST иногда может привести к проблемам с безопасностью, поскольку он объединяет различные источники пользовательского ввода. Обычно рекомендуется использовать явно $_GET, $_POST или $_COOKIE в зависимости от предполагаемого использования и источника данных, поскольку это обеспечивает большую ясность и безопасность.
😁10👍21
Swagger — это широко используемый инструмент для документирования и тестирования API, который легко интегрируется с такими популярными веб-фреймворками, как Laravel, Spring Boot, CodeIgniter и ExpressJS.

В этой статье рассматривается интеграция Swagger с CodeIgniter.
👍2🤩1
Знаете ли вы, что для отслеживания медленных запросов можно использовать параметр whenQueryingForLongerThan? Вы можете установить порог в миллисекундах. Если запрос превысит порог, вы можете отправить уведомления или выпить кофе с тем, кто создал запрос 😂.
😁19👍5🤩3
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍1
Создание типозащищенной функции pipe() в PHP

В статье автор рассказывает о потоковом подходе к программированию, который позволяет преобразовывать данные через последовательные операции, и показывает, как этот стиль естественно реализован в языке Scala. Благодаря мощным инструментам, таким как расширения методов и метод pipe, в Scala легко создавать цепочки операций, сохраняя читаемость и типобезопасность кода.

Затем автор обсуждает возможность перенести этот подход в PHP, несмотря на его ограничения. Он предлагает создать специальный класс-обёртку, который позволяет организовывать цепочки преобразований для любых данных. Такой подход упрощает работу с функциями, делает код более читаемым и поддерживает типобезопасность благодаря инструментам вроде PHPStan.

Хотя реализация в PHP сложнее и менее изящна, чем в Scala, она может быть полезна для разработчиков, которым нравится функциональный стиль программирования и необходимость писать чистый и логичный код.
👍7🌚2
#дайджест #PHPdevjob

Вакансии PHP разработчиков уровня Junior

▪️ Junior PHP-разработчик
Гибрид (Москва), Издательство МОЗАИКА-СИНТЕЗ
Подробнее

▪️ Junior backend разработчик (PHP, laravel)
Офис (Санкт-Петербург), НаПоправку
Подробнее

Вакансии PHP разработчиков уровня Middle

▪️ Backend-разработчик PHP (Middle)
Удалёнка, Simtech Development
Подробнее

▪️ Middle/Senior PHP-разработчик (Laravel)
Офис (Москва, Ростов-на-Дону) / Удалёнка, A3F Group
Подробнее

Вакансии PHP разработчиков уровня Senior

▪️ Senior PHP Developer
Удалёнка, BORK
Подробнее

▪️ Team Lead PHP Backend Developer (МК+ОТА/ЦТ)
Удалёнка / Офис (Санкт-Петербург), Bnovo
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
🤔5😁3👍21🔥1
Давайте признавайтесь в комментариях — что вам подарили? 👇
😁3
❄️🎄🤔 Чем заняться программисту на эти праздниках?

Можно посмотреть фильм из нашей подборки (в ней нет социальной сети и матрицы, потому что их уже все смотрели):

Военные игры (1983)
Хакеры (1995)
Пираты Силиконовой Долины (1999)
Кадры (2013)
Сноуден (2016)
Кто я (2014)
Черное зеркало. Бандерснэтч (2018)
👏2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💻📈 Итоги года Proglib: 2024 год в цифрах и достижениях

«Библиотека программиста» подводит итоги 2024 года: 415 экспертных статей и миллион просмотров ежемесячно. Разбираем ключевые достижения, лучшие материалы и делимся планами развития.

👉 Читать статью
👉 Зеркало

P. S. Ну просто не могли не прикрепить мем года к этому посту 🫶
👍3
Создание шаблона приложений Symfony 7 с помощью FrankenPHP, Docker, PostgreSQL и php 8.4

В статье рассказывается, как создать универсальный шаблон для запуска проектов на Symfony, таких как монолитные приложения или API. Основой является сервер приложений FrankenPHP, написанный на Go, с использованием PostgreSQL в качестве реляционной базы данных. Для организации работы контейнеров используется Docker и Compose.

Основные этапы разработки:
1. Организация структуры проекта
Проект имеет простую структуру: одна папка для файлов Docker и другая для исходного кода Symfony. Основной файл конфигурации compose.yml размещается в корне проекта. Он описывает два основных контейнера:

🔸База данных PostgreSQL.
🔸Приложение Symfony, использующее FrankenPHP.

2. Настройка окружения для разработки
Для разработки создается файл compose.override.yml, позволяющий настраивать дополнительные порты, монтировать директории и включать Xdebug. Это упрощает отладку и разработку.

3. Создание Dockerfile для приложения
Dockerfile имеет несколько стадий:

🔹Базовый образ на основе Debian Bookworm и FrankenPHP.
🔹Разработка: включает зависимости, такие как Xdebug, и файлы конфигурации для разработки.
🔹Продакшн: оптимизированный образ с использованием OPcache и минимизацией зависимостей.

4. Автоматизация процессов с помощью Composer
Composer используется не только для управления зависимостями, но и для выполнения скриптов, таких как установка контейнеров, миграция базы данных, загрузка фикстур и многое другое.

5. Конфигурация FrankenPHP
FrankenPHP работает через прокси-сервер Caddy. Используются конфигурации, рекомендованные в официальной документации, с возможностью настройки количества рабочих процессов и режима работы.

6. Symfony и дополнительные инструменты
Установлены зависимости, обеспечивающие высококлассный опыт разработки, включая Code Sniffer, phpstan, Rector, а также пакеты Symfony, такие как Doctrine ORM, Twig и инструменты для тестирования.

7. Оптимизация для продакшна
Для продакшна предусмотрена отдельная стадия сборки, где уменьшается нагрузка за счет использования OPcache и других оптимизаций. Создается файл composer.override.prod.yml, описывающий настройки для продакшн-окружения.
👍10
⚙️ Подпишись на нашу еженедельную email-рассылку, чтобы быть в курсе последних открытий и тенденций в мире бэкенда.

В еженедельных письмах ты найдешь:
● Языки программирования и фреймворки для бэкенда
● Архитектура и проектирование серверных приложений
● Базы данных и управление данными
● Безопасность и защита данных
● Облачные технологии и DevOps
● API и интеграции
● Тестирование и отладка
● Инструменты и утилиты для бэкенд-разработчиков
● Лучшие практики и паттерны проектирования

👉Подписаться👈
Моки — это инструмент для тестирования поведения объектов в изолированных условиях. Они позволяют заменить реальные зависимости на их имитацию, чтобы избежать обращения к внешним ресурсам, которые могут замедлить выполнение тестов.

Зачем нужны моки
Основная задача моков — проверять взаимодействие между объектами. Это достигается за счёт возможности задать ожидаемое поведение и проверить, насколько реальные вызовы совпадают с этими ожиданиями. Например, можно проверить, сколько раз вызывается метод и с какими параметрами.

Типичные ошибки при использовании моков
1. Отсутствие ожиданий
Если задать только возвращаемое значение без проверки взаимодействий, тест может не обнаружить проблемы.
Правильный подход: указывать, какие методы должны вызываться и с какими параметрами.

2. Мокирование конкретных классов вместо интерфейсов
Моки лучше создавать на основе интерфейсов, так как они реже меняются, чем реализации.

3. Чрезмерное использование моков
Излишнее мокирование усложняет тесты и может указывать на проблемы с проектированием.

4 .Маскировка плохого дизайна
Если моки используются для тестирования тесно связанных компонентов, это может быть признаком нарушения принципа разделения ответственности.

5. Полная зависимость от моков
Хотя моки полезны, они не заменяют другие виды тестов, такие как интеграционные или end-to-end тесты.

Как распознать неправильное использование моков
🔸Тесты не отражают реальные сценарии, что приводит к игнорированию критичных ошибок в продакшене.
🔸Тесты слишком сильно связаны с реализацией, из-за чего частое обновление моков становится необходимостью.
🔸Чрезмерная сложность тестов делает их трудными для чтения и поддержки.
👍3🤔1👾1
Выжимаем максимум скорости из PHP

При запуске PHP-приложений крайне важно правильно выбрать веб-сервер. Чтобы объективно оценить производительность популярных решений, было проведено тестирование не на искусственных данных, а на реальных примерах. Цель исследования заключалась не в создании рейтинга веб-серверов для PHP-приложений. Была цель показать, в каких условиях каждый сервер сможет продемонстрировать наилучшие результаты.
🔥10🥱21
Как работает HTTP Kernel в Symfony?

HTTP Kernel (HTTP ядро) в Symfony — это ключевой компонент фреймворка, отвечающий за обработку HTTP-запросов и формирование ответов. Он реализует шаблон проектирования Front Controller и координирует весь жизненный цикл запроса и ответа.

Основной процесс работы HTTP Kernel

1. Получение запроса:
Входной файл (index.php) получает HTTP-запрос и передаёт его в ядро.

2. Маршрутизация:
Ядро использует компонент маршрутизации, чтобы определить, какой маршрут соответствует запросу, и какой контроллер должен быть вызван.

3. Вызов контроллера:
После определения маршрута вызывается соответствующий контроллер, который обрабатывает запрос и возвращает данные.

4. Формирование ответа:
Контроллер возвращает объект ответа, который может быть модифицирован дополнительными обработчиками (например, добавление заголовков).

5. Отправка ответа:
HTTP ядро отправляет готовый ответ обратно клиенту.

6. Постобработка:
После отправки ответа запускаются задачи, которые можно выполнять асинхронно (например, логирование или очистка данных).

Основные компоненты
🔹 Запрос и ответ:
Symfony использует объект запроса, который содержит все данные HTTP-запроса (заголовки, параметры, тело и т.д.), и объект ответа, который формирует конечный HTTP-ответ.

🔹 Маршрутизация:
Компонент маршрутизации сопоставляет URL запроса с маршрутами, указанными в конфигурации, и определяет, какой контроллер и параметры использовать.

🔹 Контроллер:
Контроллер — это метод, который выполняет бизнес-логику, принимает параметры из запроса и возвращает ответ.

🔹 События:
Во время обработки запроса ядро генерирует события, на которые могут подписываться обработчики. Это позволяет изменять запрос, контроллер или ответ на разных этапах обработки.

🔹 Постобработка:
После того как ответ отправлен клиенту, могут выполняться задачи, которые не требуют немедленного завершения (например, отправка логов или очистка кэша).

Этапы обработки запроса
✔️Клиент отправляет HTTP-запрос.
✔️Ядро принимает запрос и вызывает маршрутизацию.
✔️Контроллер выполняет бизнес-логику.
✔️Генерируется HTTP-ответ.
✔️Ответ модифицируется при необходимости (например, добавляются заголовки).
✔️Готовый ответ отправляется клиенту.
✔️Выполняются завершающие задачи.

#вопросы_с_собеседований
👍10🥰31
2025/07/09 02:34:33
Back to Top
HTML Embed Code: