innmind/filesystem

文件系统抽象层

7.5.1 2024-03-27 15:14 UTC

README

Build Status codecov Type Coverage

文件系统抽象层的目标是提供一个模型,在该模型中,你可以设计如何将文件放入目录,而无需担心它们将持久化到何处。

文档

安装

composer install innmind/filesystem

使用

整个模型围绕文件、目录、内容和适配器构建。 File, DirectoryContent 是不可变对象。

示例

use Innmind\Filesystem\{
    File,
    File\Content,
    Directory,
    Adapter\Filesystem,
};
use Innmind\Url\Path;

$directory = Directory::named('uploads')->add(
    File::named(
        $_FILES['my_upload']['name'],
        Content::ofString(\file_get_contents($_FILES['my_upload']['tmp_name'])),
    ),
);
$adapter = Filesystem::mount(Path::of('/var/www/web/'));
$adapter->add($directory);

以下示例展示了如何在文件系统中创建一个名为 uploads 的新目录,并将其放置在 /var/www/web/ 文件夹中,并创建一个上传的文件。

注意:出于性能考虑,文件系统适配器仅将已更改的文件持久化到磁盘(通过文件对象的不可变性质实现)。

所有适配器都实现了 Adapter,因此您可以轻松地替换它们;特别是对于单元测试,这就是为什么该库附带了一个 InMemory 适配器,它仅在内存中保留文件,这样您就不会弄乱文件系统。