sallycms/filesystem
此包已废弃,不再维护。未建议替代包。
直接的文件系统抽象层
v1.1.1
2013-03-30 08:27 UTC
Requires
- php: >=5.3.2
Suggests
- phpsec/phpsec: enables encryption via the encrypted decorator
This package is auto-updated.
Last update: 2019-02-20 17:24:40 UTC
README
Sally FAL 是一个轻量级的、非常直接的抽象层,包含创建、读取、删除等基本文件操作。它不试图解决所有问题,同时尽量减少 OOP 的开销。
需求
Sally FAL 需要 PHP 5.3.2+。特定的适配器(如 PDO 或 S3)可能需要额外的库,这些库默认情况下并未安装。您必须自己将它们添加到项目中。
请注意,尽管这个库起源于 SallyCMS,但使用 Sally 不是必须的。它们只是共享同一个基础命名空间(sly
),没有其他关系。
安装
将以下要求添加到您的 composer.json
文件中
:::json
{
"require": {
"sallycms/filesystem": "$VERSION"
}
}
将 $VERSION
替换为 Packagist 上的某个可用版本。
概述
该库提供以下适配器
Adapter\Blackhole
总是空的,永远不会包含任何文件。写操作将被简单地忽略。Adapter\Local
在常规文件系统中存储文件。Adapter\LocalHttp
与Adapter\Local
类似,但为文件返回 HTTP URL。Adapter\Memory
在内存中存储所有文件。Adapter\Pdo
使用已建立的 PDO 连接在数据库中存储文件。
此外,您可以使用自己的或已提供的装饰器来装饰这些适配器
Decorator\CaseInsensitive
强制所有文件名和路径都为小写。Decorator\Encrypted
使用phpsec/phpsec
库加密和解密文件内容。Decorator\Gzip
使用gzencode()
和gzdecode()
透明地压缩文件内容。Decorator\Prefixed
可以用来限制对底层文件系统的访问,只能访问强制的前缀路径。
接口
以下约束至关重要,每个适配器都必须实现
- 该库仅管理 文件,而不是 目录(如 Mercurial 和 Git 所做的那样)。然而,实现可以自由考虑使用常规目录分隔符(
/
和\
)将文件名映射到底层存储。 - 所有路径都是大小写敏感的。
- 文件内容不得被修改(即永不被修剪)。
- 所有抛出的异常必须是
sly\Filesystem\FilesystemException
或其任何子类。 listFiles()
必须以排序的方式返回文件,与Util::sortFilenames()
中的算法匹配(基本上是先子目录)。- 同一目录下不能同时存在目录
foo
和文件foo
(这是来自本地文件系统的特定限制,所有其他适配器都需要采用以确保一致的行为)。 - 所有方法都必须正确处理
/
和\
作为目录分隔符。
PHP 接口 sly\Filesystem\Filesystem
定义了以下方法(伪代码)
::::php
<?php
interface Filesystem {
public /* int */ function getSize(string $filename);
public /* int */ function getMtime(string $filename);
public /* string */ function getUrl(string $filename);
public /* bool */ function exists(string $filename);
public /* bool */ function read(string $filename);
public /* string */ function write(string $filename, string $content);
public /* string */ function touch(string $filename);
public /* string */ function remove(string $filename);
public /* string */ function copy(string $source, string $target);
public /* string */ function move(string $source, string $target);
public /* array */ function listFiles(string $prefix = '');
}
许可
Sally FAL 在 MIT 许可证下授权 - 有关详细信息,请参阅 LICENSE 文件。