Merge remote-tracking branch 'origin/dev'

This commit is contained in:
CORP\phedor 2018-02-16 12:12:17 +03:00
commit caa7819598

View file

@ -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));
}
/**