1. Go to this page and download the library: Download exteon/uri-mapper library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
exteon / uri-mapper example snippets
// Setup
use Exteon\Uri\UnixPathUri;
use Exteon\Uri\Uri;
use Exteon\UriMapper\FilePath;
use Exteon\UriMapper\FileRoot;
use Exteon\UriMapper\Join;
use Exteon\UriMapper\JoinPoint;
use Exteon\UriMapper\Root;
use Exteon\UriMapper\UriMapper;
$uriMapper = new UriMapper();
$fileRootUri = UnixPathUri::fromString('/var/www/html');
$webRootUri = Uri::fromString('http://foo.bar/public/');
$uriMapper
->addRoot(
new FileRoot($uriMapper, $fileRootUri, 'file'),
new Root($uriMapper, $webRootUri, 'web')
)
->addJoin(
new Join(
$uriMapper,
[
new JoinPoint($uriMapper, $fileRootUri,'file'),
new JoinPoint($uriMapper, $webRootUri,'web')
]
)
);
// Process
// we receive requested URI in $uriString, eg.
$uriString = 'http://foo.bar/public/some/file.txt';
// discard URI querystring and fragment
$requestUri =
Uri::fromString($uriString)
->setQueryString(null)
->setFragment(null);
// Get web context path and convert to file context
$webPath = $uriMapper->mapUri($requestUri, 'web');
$filePath = FilePath::type($webPath->toContext('file'));
// Serve
if(!$filePath){
http_response_code(400);
}
elseif(!$filePath->isFile()){
http_response_code(404);
} else {
header('Content-type: text/text');
readfile($filePath->getUnixPath());
}
// Setup
use Exteon\Uri\UnixPathUri;
use Exteon\UriMapper\FilePath;
use Exteon\UriMapper\FileRoot;
use Exteon\UriMapper\Join;
use Exteon\UriMapper\JoinPoint;
use Exteon\UriMapper\UriMapper;
$uriMapper = new UriMapper();
$virtualTempUri = UnixPathUri::fromString('/tmp/');
$fileSystemTempUri = UnixPathUri::fromString('/mnt/ramfs1/tmp/');
$uriMapper
->addRoot(
new FileRoot($uriMapper, $virtualTempUri, 'virtual'),
new FileRoot($uriMapper, $fileSystemTempUri, 'file')
)
->addJoin(
new Join(
$uriMapper,
[
new JoinPoint($uriMapper, $virtualTempUri,'virtual'),
new JoinPoint($uriMapper, $fileSystemTempUri,'file')
]
)
);
// Generate session virtual path
$sessionId = 'ABCD';
$sessionFName = $sessionId.'.json';
$sessionVirtualPath =
$uriMapper->mapUri(
UnixPathUri::fromString('/tmp'),
'virtual'
)->descend($sessionFName);
// Access actual file contents
$sessionFilePath = FilePath::type($sessionVirtualPath->toContext('file'));
$sessionData = json_decode(file_get_contents($sessionFilePath->getUnixPath()));
public function addRoot(Root ...$roots): self
public function addJoin(Join ...$joins): self
public function mapUri(AbstractUri $uri, string $context = '' ): ?Path
public function __construct(
UriMapper $uriMapper,
AbstractUri $mountUri,
string $context = '',
bool $doesAllowSubroots = true
)
public function __construct(
UriMapper $uriMapper,
AbstractUri $uri,
string $context = '',
int $type = self::TYPE_BOTH
)
public function __construct(UriMapper $uriMapper, array $joinPoints)
public function getUri(): AbstractUri
public function getRelativeUri(): AbstractUri
public function toString(): string
public function toContext(string $targetContext): ?Path