Компонент 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