РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
217 of 1361 menu

Метод pop

Метод pop класса RequestStack удаляет последний (текущий) запрос из стека и возвращает его. Если стек пуст, метод возвращает null. Метод не принимает параметров. Обычно используется для восстановления предыдущего запроса после завершения работы с вложенным запросом.

Синтаксис

public function pop(): ?Request

Пример

Давайте создадим стек, добавим в него два запроса и извлечём последний с помощью метода pop:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationRequestStack; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $stack = new RequestStack(); $request1 = new Request(); $request1->attributes->set('name', 'first'); $request2 = new Request(); $request2->attributes->set('name', 'second'); $stack->push($request1); $stack->push($request2); $popped = $stack->pop(); return new Response($popped->attributes->get('name')); } } ?>

Результат выполнения кода:

"second"

Пример

Давайте извлечём запрос из пустого стека и убедимся, что метод возвращает null:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequestStack; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $stack = new RequestStack(); $popped = $stack->pop(); if ($popped === null) { return new Response('stack is empty'); } return new Response('stack is not empty'); } } ?>

Результат выполнения кода:

"stack is empty"

Пример

Давайте получим основной и текущий запросы, а затем вернёмся к основному с помощью метода pop:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationRequestStack; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(RequestStack $stack): Response { $main = $stack->getMainRequest(); $current = $stack->getCurrentRequest(); if ($main === $current) { return new Response('main equals current'); } $popped = $stack->pop(); if ($popped === $current) { return new Response('popped current request'); } return new Response('popped unknown request'); } } ?>

Результат выполнения кода для основного запроса:

"main equals current"

Смотрите также

  • класс RequestStack,
    который управляет стеком запросов
  • метод push,
    который добавляет запрос в стек
  • метод getCurrentRequest,
    который возвращает текущий запрос
  • метод getMainRequest,
    который возвращает основной запрос
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить