lithium\net\http\Media::path()
Returns the physical path to an asset in the /webroot
directory of an application or
plugin.
Parameters
-
string
$paths
The path to a web asset, relative to the root path for its type. For example, for a JavaScript file in
/webroot/js/subpath/file.js
, the correct value for$path
would be'subpath/file.js'
. -
string
$type
A valid asset type, i.e.
'js'
,'cs'
,'image'
, or another type registered withMedia::assets()
, or'generic'
. -
array
$options
The options used to calculate the path to the file.
Returns
stringReturns the physical filesystem path to an asset in the /webroot
directory.
Source
public static function path($path, $type, array $options = []) {
$defaults = [
'base' => null,
'paths' => [],
'suffix' => null,
'library' => true,
'scope' => false
];
if (!$base = static::_assets($type)) {
$base = static::_assets('generic');
}
$options += ($base + $defaults);
$paths = $options['paths'];
if ($options['scope']) {
$root = static::webroot(false, $options['scope']);
} else {
$root = static::webroot($options['library']);
Libraries::get(true, 'name') === $options['library'] ? end($paths) : reset($paths);
}
if ($qOffset = strpos($path, '?')) {
$path = substr($path, 0, $qOffset);
}
if ($path[0] === '/') {
$file = $root . $path;
} else {
$template = str_replace('{:library}/', '', key($paths));
$insert = ['base' => $root] + compact('path');
$file = Text::insert($template, $insert);
}
return realpath($file);
}