Класс Filesystem
Класс Filesystem входит в состав компонента
symfony/filesystem и предоставляет набор методов
для работы с файлами и директориями. Он избавляет
от необходимости писать низкоуровневый код с
fopen, mkdir, rename и другими
функциями PHP. Методы класса автоматически создают
промежуточные директории, проверяют существование
файлов и выбрасывают исключения при ошибках.
Класс не имеет обязательных параметров конструктора,
поэтому создаётся простым вызовом new Filesystem.
Доступные методы: exists, mkdir,
copy, rename, remove,
mirror, dumpFile, appendToFile,
readFile, touch, chmod,
chown, chgrp, symlink,
hardlink, readlink,
makePathRelative, isAbsolutePath,
tempnam и другие.
Синтаксис
<?php
use Symfony\Component\Filesystem\Filesystem;
$fs = new Filesystem();
?>
Пример
Давайте создадим объект класса и проверим,
существует ли файл 'article.txt':
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Filesystem;
class FileService
{
public function check(): void
{
$fs = new Filesystem();
$res = $fs->exists('article.txt');
var_dump($res);
}
}
?>
Результат выполнения кода:
false
Пример
Давайте создадим директорию 'var/uploads'
вместе со всеми промежуточными папками:
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Filesystem;
class FileService
{
public function createDir(): void
{
$fs = new Filesystem();
$fs->mkdir('var/uploads');
echo 'directory created';
}
}
?>
Результат выполнения кода:
"directory created"
Пример
Давайте запишем строку в файл 'var/data.txt'
и затем прочитаем его содержимое:
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Filesystem;
class FileService
{
public function writeAndRead(): void
{
$fs = new Filesystem();
$fs->dumpFile('var/data.txt', 'hello');
$res = $fs->readFile('var/data.txt');
echo $res;
}
}
?>
Результат выполнения кода:
"hello"
Пример
Давайте скопируем файл 'var/data.txt'
в 'var/backup/data.txt':
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Filesystem;
class FileService
{
public function copyFile(): void
{
$fs = new Filesystem();
$fs->copy(
'var/data.txt',
'var/backup/data.txt'
);
echo 'file copied';
}
}
?>
Результат выполнения кода:
"file copied"
Пример
Давайте удалим файл 'var/data.txt'
и директорию 'var/backup':
<?php
namespace App\Service;
use Symfony\Component\Filesystem\Filesystem;
class FileService
{
public function removeFiles(): void
{
$fs = new Filesystem();
$fs->remove([
'var/data.txt',
'var/backup',
]);
echo 'removed';
}
}
?>
Результат выполнения кода:
"removed"