ab1e9f3f81
* 2.3: Configure firewall's kernel exception listener with configured entry point or a default entry point PSR-2 fixes [DependencyInjection] make paths relative to __DIR__ in the generated container Fixed the syntax of a composer.json file Fixed the symfony/config version constraint Tweaked the password-compat version constraint Docblock fixes define constant only if it wasn't defined before Fix incorrect spanish translation Fixed typos Conflicts: composer.json src/Symfony/Bridge/Twig/TwigEngine.php src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php src/Symfony/Bundle/FrameworkBundle/Templating/Loader/FilesystemLoader.php src/Symfony/Bundle/FrameworkBundle/composer.json src/Symfony/Component/Console/Descriptor/MarkdownDescriptor.php src/Symfony/Component/Console/Helper/TableHelper.php src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php src/Symfony/Component/Debug/ErrorHandler.php src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php src/Symfony/Component/Finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php src/Symfony/Component/Form/Tests/Extension/Core/DataMapper/PropertyPathMapperTest.php src/Symfony/Component/HttpFoundation/Response.php src/Symfony/Component/HttpFoundation/StreamedResponse.php src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php src/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php src/Symfony/Component/HttpKernel/Fragment/RoutableFragmentRenderer.php src/Symfony/Component/HttpKernel/Tests/DataCollector/RequestDataCollectorTest.php src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php src/Symfony/Component/Process/Process.php src/Symfony/Component/Process/Tests/AbstractProcessTest.php src/Symfony/Component/PropertyAccess/PropertyAccessorBuilder.php src/Symfony/Component/Routing/Tests/Fixtures/validpattern.php src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeServices.php src/Symfony/Component/Security/composer.json src/Symfony/Component/Serializer/Encoder/XmlEncoder.php src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php src/Symfony/Component/Stopwatch/StopwatchEvent.php src/Symfony/Component/Stopwatch/StopwatchPeriod.php src/Symfony/Component/Templating/PhpEngine.php src/Symfony/Component/Templating/TemplateReference.php src/Symfony/Component/Templating/TemplateReferenceInterface.php src/Symfony/Component/Translation/TranslatorInterface.php src/Symfony/Component/Validator/ConstraintViolation.php src/Symfony/Component/Validator/ExecutionContextInterface.php src/Symfony/Component/Validator/Mapping/ClassMetadata.php src/Symfony/Component/Validator/MetadataFactoryInterface.php
103 lines
2.3 KiB
PHP
103 lines
2.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Symfony\Component\BrowserKit;
|
|
|
|
/**
|
|
* History.
|
|
*
|
|
* @author Fabien Potencier <fabien@symfony.com>
|
|
*/
|
|
class History
|
|
{
|
|
protected $stack = array();
|
|
protected $position = -1;
|
|
|
|
/**
|
|
* Clears the history.
|
|
*/
|
|
public function clear()
|
|
{
|
|
$this->stack = array();
|
|
$this->position = -1;
|
|
}
|
|
|
|
/**
|
|
* Adds a Request to the history.
|
|
*
|
|
* @param Request $request A Request instance
|
|
*/
|
|
public function add(Request $request)
|
|
{
|
|
$this->stack = array_slice($this->stack, 0, $this->position + 1);
|
|
$this->stack[] = clone $request;
|
|
$this->position = count($this->stack) - 1;
|
|
}
|
|
|
|
/**
|
|
* Returns true if the history is empty.
|
|
*
|
|
* @return bool true if the history is empty, false otherwise
|
|
*/
|
|
public function isEmpty()
|
|
{
|
|
return count($this->stack) == 0;
|
|
}
|
|
|
|
/**
|
|
* Goes back in the history.
|
|
*
|
|
* @return Request A Request instance
|
|
*
|
|
* @throws \LogicException if the stack is already on the first page
|
|
*/
|
|
public function back()
|
|
{
|
|
if ($this->position < 1) {
|
|
throw new \LogicException('You are already on the first page.');
|
|
}
|
|
|
|
return clone $this->stack[--$this->position];
|
|
}
|
|
|
|
/**
|
|
* Goes forward in the history.
|
|
*
|
|
* @return Request A Request instance
|
|
*
|
|
* @throws \LogicException if the stack is already on the last page
|
|
*/
|
|
public function forward()
|
|
{
|
|
if ($this->position > count($this->stack) - 2) {
|
|
throw new \LogicException('You are already on the last page.');
|
|
}
|
|
|
|
return clone $this->stack[++$this->position];
|
|
}
|
|
|
|
/**
|
|
* Returns the current element in the history.
|
|
*
|
|
* @return Request A Request instance
|
|
*
|
|
* @throws \LogicException if the stack is empty
|
|
*/
|
|
public function current()
|
|
{
|
|
if (-1 == $this->position) {
|
|
throw new \LogicException('The page history is empty.');
|
|
}
|
|
|
|
return clone $this->stack[$this->position];
|
|
}
|
|
}
|