Merge remote-tracking branch 'origin/dev'
This commit is contained in:
commit
caa7819598
1 changed files with 29 additions and 15 deletions
44
src/Path.php
44
src/Path.php
|
|
@ -23,7 +23,15 @@ class Path
|
|||
if (isset($this->url['path'])) {
|
||||
$path = $this->url['path'];
|
||||
// $path = preg_replace('/\/{2,}/', '/', $path);
|
||||
$this->path = self::optimize($this->fromString($path));
|
||||
$list = self::listFromString($path);
|
||||
|
||||
if (isset($this->url['scheme']) && !isset($this->url['host'])) {
|
||||
$this->absolute = false;
|
||||
} else if ($list[0] == '' && count($list) > 1) {
|
||||
$this->absolute = true;
|
||||
}
|
||||
|
||||
$this->path = self::optimize($list);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -109,24 +117,20 @@ class Path
|
|||
return pathinfo($fileName, PATHINFO_FILENAME);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Преобразует строку путя в массив
|
||||
* Часть конструктора
|
||||
* Преобразует строку пути в массив
|
||||
*
|
||||
* @param string $path Путь
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function fromString ($path)
|
||||
public static function listFromString ($path)
|
||||
{
|
||||
assert(is_string($path));
|
||||
|
||||
$list = preg_split('#\\\\|/#s', $path);
|
||||
if (isset($this->url['scheme']) && !isset($this->url['host'])) {
|
||||
$this->absolute = false;
|
||||
} else if ($list[0] == '' && count($list) > 1) {
|
||||
$this->absolute = true;
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
|
@ -268,14 +272,12 @@ class Path
|
|||
return self::join($base, $path);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Обьединяет строки в путь соединяя необходимым разделителем
|
||||
* Обьединяет строки в Path соединяя необходимым разделителем
|
||||
* fixme не обрабатывает параметры урла, решение Path::join(SITE_WWW_PATH) . '?param=pampam'
|
||||
* @return string
|
||||
*/
|
||||
static function join($_rest)
|
||||
{
|
||||
static function fromJoin($_rest) {
|
||||
$args = func_get_args();
|
||||
$result = array();
|
||||
$parts0 = new Path(array_shift($args));
|
||||
|
|
@ -287,7 +289,19 @@ class Path
|
|||
// При обьединении ссылок можно обьеденить path, query, fragment
|
||||
$path = implode(self::SEPARATOR, call_user_func_array('array_merge', $result));
|
||||
$parts0->url['path'] = ($parts0->isAbsolute()) ? '/' . $path : $path;
|
||||
return self::makeUrl($parts0->url);
|
||||
return $parts0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Обьединяет строки в строку пути соединяя необходимым разделителем
|
||||
* fixme не обрабатывает параметры урла, решение Path::join(SITE_WWW_PATH) . '?param=pampam'
|
||||
* @return string
|
||||
*/
|
||||
static function join($_rest)
|
||||
{
|
||||
$args = func_get_args();
|
||||
$path = call_user_func_array("self::fromJoin", $args);
|
||||
return self::makeUrl($path->url);
|
||||
}
|
||||
|
||||
// Проверка структуры имени файла
|
||||
|
|
@ -440,7 +454,7 @@ class Path
|
|||
*/
|
||||
static function updateRelativePathOnFileMove($relativePath, $srcFile, $dstFile) {
|
||||
$srcToDst = self::relative($srcFile, $dstFile);
|
||||
return self::join($srcToDst, $relativePath);
|
||||
return self::normalize(self::join($srcToDst, $relativePath));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue