Новое в Symfony 3.2: Изменения компонента Filesystem

Компонент Filesystem представляет собой небольшой пакет, который предоставляет удобные утилиты для общих операций файловой системы. Он также позволяет абстрагироваться при работе с файлами в различных операционных системах.

В Symfony 3.2 мы улучшили ее, добавив две новые функции.

Добавлен кросс-платформенный метод readlink()

Функция РНР readlink() возвращает объект символической ссылки. Тем не менее, его поведение полностью отличается под Windows, и Unix. В системах Windows readlink() переходит рекурсивно от ссылке к ссылке до тех пор, конечная ссылка не будет найдена. На системах Unix readlink() переходит только к следующей ссылке.

Новый метод readlink() компонента Filesystem работает следующим образом:

public function readlink($path, $canonicalize = false)

Если $canonicalize имеет значение false:

  • если $path не существует или не является ссылкой, то она возвращает null.
  • если $path является ссылкой, он возвращает путь к этой ссылке.

Если $canonicalize имеет значение false:

  • если $path не существует, она возвращает null.
  • если существует $path, то она возвращает полный путь к элементу.

Добавлен метод hardlink()

Хотя в основном разработчики используют мягкие или символические ссылки, иногда удобно создавать жесткие ссылки. Работа с жесткой ссылкой аналогична работе с самим объектом на который она ссылается: жесткий ссылка указывает на точно тот же самый инод целевого файла, и вы можете даже переименовать целевой файл, это никак не отразится на жесткой ссылке.

Новый метод hardlink() компонента Filesystem позволяет создавать одну или несколько жестких ссылок на файл:

use Symfony\Component\Filesystem\Filesystem;

$fs = new Filesystem();
$fs->hardlink('file1.txt', 'hardlink1.lnk');
// fileinode('file1.txt') === fileinode('hardlink1.lnk')

// multiple hardlinks pointing to the same file
$fs->hardlink('file2.txt', ['hardlink2.lnk', 'hardlink3.lnk']);

Источник: https://symfony.com/blog/new-in-symfony-3-2-filesystem-improvements

Добавить комментарий

Ваш адрес email не будет опубликован.

два × четыре =