Класс Path
Класс Path из компонента Symfony\Component\Filesystem\Path
содержит статические методы для удобной и безопасной работы
с файловыми путями. Он позволяет нормализовать пути, объединять
их, проверять абсолютность, извлекать имя файла, расширение,
директорию, а также строить относительные пути между двумя
абсолютными. Класс не требует создания экземпляра - все методы
вызываются статически.
Синтаксис
<?php
use Symfony\Component\Filesystem\Path;
Path::method($path, ...$args);
?>
Пример
Давайте нормализуем путь, содержащий лишние разделители и переходы вверх:
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Path;
class PathService
{
public function normalize(): string
{
return Path::normalize('/var/www/../www/app/./src');
}
}
?>
Результат выполнения кода:
"/var/www/app/src"
Пример
Давайте объединим несколько частей пути в один:
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Path;
class PathService
{
public function join(): string
{
return Path::join('/var/www', 'app', 'src', 'Controller');
}
}
?>
Результат выполнения кода:
"/var/www/app/src/Controller"
Пример
Давайте извлечём имя файла, расширение и директорию из пути:
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Path;
class PathService
{
public function parts(): array
{
$path = '/var/www/app/article.html.twig';
return [
'filename' => Path::getFilename($path),
'extension' => Path::getExtension($path),
'directory' => Path::getDirectory($path),
];
}
}
?>
Результат выполнения кода:
["filename" => "article.html.twig", "extension" => "twig", "directory" => "/var/www/app"]
Пример
Давайте проверим, является ли путь абсолютным, и построим относительный путь между двумя абсолютными:
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Path;
class PathService
{
public function relative(): array
{
$base = '/var/www/app';
$path = '/var/www/app/src/Controller/UserController.php';
return [
'is_absolute' => Path::isAbsolute($path),
'is_relative' => Path::isRelative($path),
'relative' => Path::makeRelative($path, $base),
];
}
}
?>
Результат выполнения кода:
["is_absolute" => true, "is_relative" => false, "relative" => "src/Controller/UserController.php"]
Смотрите также
-
метод
join,
который объединяет несколько частей пути в один -
метод
normalize,
который приводит путь к каноническому виду -
метод
makeRelative,
который строит относительный путь между двумя абсолютными -
метод
getExtension,
который возвращает расширение файла из пути