for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/*
* This file is part of Zippy.
*
* (c) Alchemy <[email protected]>
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\Zippy\Resource;
class RequestMapper
{
private $locator;
/**
* Constructor
* @param TargetLocator $locator
public function __construct(TargetLocator $locator)
$this->locator = $locator;
}
* Maps resources request to a ResourceCollection
* @param $context
* @param array $resources
* @return ResourceCollection
public function map($context, array $resources)
$data = array();
foreach ($resources as $location => $resource) {
if (is_int($location)) {
$data[] = new Resource($resource, $this->locator->locate($context, $resource));
} else {
$data[] = new Resource($resource, ltrim($location, '/'));
if (count($data) === 1) {
$context = $data[0]->getOriginal();
$collection = new ResourceCollection($context, $data, false);
return $collection;
* Creates the default RequestMapper
* @return RequestMapper
public static function create()
return new static(new TargetLocator());