Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

138 lines (120 sloc) 3.504 kb
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Mvc
*/
namespace Zend\Mvc\Router\Http;
use Traversable;
use Zend\Mvc\Router\Exception;
use Zend\Stdlib\ArrayUtils;
use Zend\Stdlib\RequestInterface as Request;
/**
* Literal route.
*
* @package Zend_Mvc_Router
* @subpackage Http
* @see http://manuals.rubyonrails.com/read/chapter/65
*/
class Literal implements RouteInterface
{
/**
* RouteInterface to match.
*
* @var string
*/
protected $route;
/**
* Default values.
*
* @var array
*/
protected $defaults;
/**
* Create a new literal route.
*
* @param string $route
* @param array $defaults
*/
public function __construct($route, array $defaults = array())
{
$this->route = $route;
$this->defaults = $defaults;
}
/**
* factory(): defined by RouteInterface interface.
*
* @see Route::factory()
* @param array|Traversable $options
* @throws Exception\InvalidArgumentException
* @return Literal
*/
public static function factory($options = array())
{
if ($options instanceof Traversable) {
$options = ArrayUtils::iteratorToArray($options);
} elseif (!is_array($options)) {
throw new Exception\InvalidArgumentException(__METHOD__ . ' expects an array or Traversable set of options');
}
if (!isset($options['route'])) {
throw new Exception\InvalidArgumentException('Missing "route" in options array');
}
if (!isset($options['defaults'])) {
$options['defaults'] = array();
}
return new static($options['route'], $options['defaults']);
}
/**
* match(): defined by RouteInterface interface.
*
* @see Route::match()
* @param Request $request
* @param int|null $pathOffset
* @return RouteMatch|null
*/
public function match(Request $request, $pathOffset = null)
{
if (!method_exists($request, 'getUri')) {
return null;
}
$uri = $request->getUri();
$path = $uri->getPath();
if ($pathOffset !== null) {
if ($pathOffset >= 0 && strlen($path) >= $pathOffset && !empty($this->route)) {
if (strpos($path, $this->route, $pathOffset) === $pathOffset) {
return new RouteMatch($this->defaults, strlen($this->route));
}
}
return null;
}
if ($path === $this->route) {
return new RouteMatch($this->defaults, strlen($this->route));
}
return null;
}
/**
* assemble(): Defined by RouteInterface interface.
*
* @see Route::assemble()
* @param array $params
* @param array $options
* @return mixed
*/
public function assemble(array $params = array(), array $options = array())
{
return $this->route;
}
/**
* getAssembledParams(): defined by RouteInterface interface.
*
* @see Route::getAssembledParams
* @return array
*/
public function getAssembledParams()
{
return array();
}
}
Jump to Line
Something went wrong with that request. Please try again.