sallycms/filesystem

此包已废弃,不再维护。未建议替代包。

直接的文件系统抽象层

维护者

详细信息

bitbucket.org/SallyCMS/filesystem

安装: 18

依赖: 0

建议者: 0

安全: 0

v1.1.1 2013-03-30 08:27 UTC

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\LocalHttpAdapter\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 文件。