Метод hardlink
Метод hardlink класса Filesystem создаёт жёсткую ссылку на существующий файл.
Первым параметром передаётся исходный файл, на который создаётся ссылка.
Вторым параметром передаётся путь, по которому будет создана жёсткая ссылка.
Жёсткая ссылка - это дополнительное имя для того же самого файла на диске.
Оба имени указывают на одни и те же данные, и изменение содержимого через одно имя
отражается на другом. Если исходный файл не существует, метод выбросит исключение
IOException.
Синтаксис
public function hardlink(string $originFile, string $targetFile): void
Пример
Давайте создадим жёсткую ссылку на файл 'article':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Filesystem\Filesystem;
class ArticleController extends AbstractController
{
public function index(): Response
{
$fs = new Filesystem();
$fs->dumpFile('/tmp/article', 'abcde');
$fs->hardlink('/tmp/article', '/tmp/article_link');
return new Response('done');
}
}
?>
После выполнения кода файл '/tmp/article_link' будет указывать на те же данные,
что и '/tmp/article'.
Пример
Давайте убедимся, что изменение содержимого через ссылку меняет исходный файл:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Filesystem\Filesystem;
class ArticleController extends AbstractController
{
public function index(): Response
{
$fs = new Filesystem();
$fs->dumpFile('/tmp/article', 'abcde');
$fs->hardlink('/tmp/article', '/tmp/article_link');
$fs->dumpFile('/tmp/article_link', 'hello');
return new Response($fs->readFile('/tmp/article'));
}
}
?>
Результат выполнения кода:
hello
Смотрите также
-
класс
Filesystem,
который предоставляет методы для работы с файловой системой -
метод
symlink,
который создаёт символьную ссылку на файл -
метод
readlink,
который читает цель символьной ссылки -
метод
dumpFile,
который записывает содержимое в файл