ulrack/vfs

此包已被废弃,不再维护。作者建议使用grizz-it/vfs包。

Ulrack的虚拟文件系统。

2.0.1 2020-03-05 20:45 UTC

This package is auto-updated.

Last update: 2020-04-04 20:34:07 UTC


README

Build Status

Ulrack VFS

Ulrack VFS 是 PHP 中的虚拟文件系统实现。它允许创建受限制的文件和目录操作类。

安装

要安装此包,请运行以下命令

composer require ulrack/vfs

使用

驱动程序

驱动程序用于连接到文件系统。此包仅包含本地文件系统的驱动程序。驱动程序基于 Ulrack\Vfs\Common\FileSystemDriverInterface 构建。

Ulrack\Vfs\Component\Driver\LocalFileSystemDriver

此实现作为 Ulrack\Vfs\Component\FileSystem\LocalFileSystem 的工厂。一个示例实现如下

use Ulrack\Vfs\Driver\LocalFileSystemDriver;

$driver = new LocalFileSystemDriver();

$fileSystem = $driver->connect(__DIR__ . '/tests/test-filesystem');

这将产生一个只限于目录 ulrack/vfs/test/test-filesystem 的文件系统。

文件系统

文件系统基于 Ulrack\Vfs\Common\FileSystemInterface。文件系统提供 PHP 对文件和目录操作的基本功能,但基于接口。这简化了更改文件和目录的源。

Ulrack\Vfs\Component\FileSystem\LocalFileSystem

此类实现了操作受限制的本地文件系统的功能。建议通过 LocalFileSystemDriver 创建此类的实例,但也可以不使用它。

use Ulrack\Vfs\FileSystem\LocalFileSystem;

$filesystem = new LocalFileSystem(__DIR__ . '/tests/test-filesystem');

文件

此包还提供了一个文件迭代器类。此迭代器基于 Ulrack\Vfs\Common\FileInterface 构建。

Ulrack\Vfs\Component\File\File

此类是 FileInterface 的实现。它在一个文件上公开迭代器和 ArrayAccess 功能。

文件可以以两种不同的模式打开。

MODE_CHUNK

此模式在预定的尺寸块中迭代文件。写操作完全覆盖一个块(即使大小不同)。在此模式中,块的大小决定了要读取的字节数。

MODE_LINE

此模式按行迭代文件(使用 PHP_EOL)。写操作完全覆盖定义位置上的行。在此模式中,块的大小决定了行可以有的最大字节数。

可以通过调用 getFileIterableLocalFileSystem 创建 File 类。要创建一个实例,以 r+ 模式打开文件,并将资源、所需的模式和块大小传递给构造函数

use Ulrack\Vfs\Common\FileInterface;
use Ulrack\Vfs\File\File;

$fileResource = fopen(__DIR__ . '/tests/test-filesystem/foo.txt');
$fileIterable = new File($fileResource, FileInterface::MODE_LINE);

然后可以像使用数组一样使用迭代器

// Write foo to the second line.
$fileIterable[1] = 'foo';

// Outputs foo
echo $fileIterable[1];

// Removes foo from the file.
unset($fileIterable[1]);

// Appends foo as a line to the end of the file.
$fileIterable[] = 'foo';

// Will output the line and line number for every line in the file.
foreach ($fileIterable as $key => $line) {
    echo sprintf('Line %d says: %s', $key + 1, $line);
}

变更日志

请参阅CHANGELOG,获取关于最近更改的更多信息。

贡献

请参阅CONTRIBUTINGCODE_OF_CONDUCT,了解详细信息。

MIT许可协议

版权所有 (c) 2019 GrizzIT

在此特此免费许可,任何人获得本软件及其相关文档文件(“软件”)的副本,可以不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许获得软件的个人进行此类操作,但必须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的还是法定的,包括但不限于适销性、适用于特定目的和不受侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论该责任是基于合同、侵权或其他原因,以及该软件或其使用或其他处置方式。