Flysystem 用于 PHP:完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Flysystem,为什么需要它?

\n\n

Flysystem 是一个强大的 PHP 库,为处理各种文件系统提供了统一、一致的接口。由 Frank de Jonge 开发,它解决了一个根本性问题:在实际项目中,代码往往与特定的文件系统(本地磁盘、FTP、Amazon S3、Dropbox 等)紧密耦合。如果将来需要将文件存储从本地服务器迁移到云存储,就必须重写大量代码。

\n\n

Flysystem 抽象了这种复杂性。您只需编写一次代码,使用统一的 API,即可在不更改应用程序业务逻辑的情况下更换文件系统的“适配器”(驱动程序)。这使得您的代码:

\n
    \n
  • 灵活 — 轻松切换不同的存储方式。
  • \n
  • 可测试 — 可以在测试中使用“虚拟”文件系统。
  • \n
  • 可移植 — 代码在不同环境中运行一致。
  • \n
\n\n

该库被用于许多知名项目,如 Laravel(作为存储磁盘的基础)、Symfony、Drupal 等。Flysystem 支持数十种适配器:Local、FTP/SFTP、Amazon S3、Google Cloud Storage、Azure Blob Storage、WebDAV、Dropbox,甚至加密和 Zip 归档。

\n\n

安装

\n\n

Flysystem 通过 Composer 安装。对于基本的本地文件系统操作,需要两个包:

\n\n
composer require league/flysystem\ncomposer require league/flysystem-local
\n\n

重要提示: 从 3.x 版本开始,Flysystem 采用分离架构。主包 league/flysystem 仅包含接口和基础类。适配器(驱动程序)需要单独安装。这样可以根据实际需要只安装必要的组件。

\n\n

其他文件系统的安装:

\n
    \n
  • composer require league/flysystem-ftp — 用于 FTP/SFTP
  • \n
  • composer require league/flysystem-aws-s3-v3 — 用于 Amazon S3
  • \n
  • composer require league/flysystem-google-cloud-storage — 用于 Google Cloud
  • \n
  • composer require league/flysystem-memory — 用于测试(虚拟内存文件系统)
  • \n
\n\n

快速入门

\n\n

创建一个简单示例:在本地磁盘上写入、读取和删除文件。

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse League\\Flysystem\\Filesystem;\nuse League\\Flysystem\\Local\\LocalFilesystemAdapter;\n\n// 1. 创建本地文件系统的适配器\n// 指定存储文件的根目录\n$adapter = new LocalFilesystemAdapter(__DIR__ . '/storage');\n\n// 2. 创建 Filesystem 实例\n$filesystem = new Filesystem($adapter);\n\n// 3. 写入文件\n$filesystem->write('hello.txt', '你好,世界!');\n\n// 4. 读取文件\n$content = $filesystem->read('hello.txt');\necho $content; // 输出:你好,世界!\n\n// 5. 检查文件是否存在\nif ($filesystem->fileExists('hello.txt')) {\n    echo "文件存在!";\n}\n\n// 6. 删除文件\n$filesystem->delete('hello.txt');\n\n// 7. 检查文件是否已删除\necho $filesystem->fileExists('hello.txt') ? '存在' : '不存在'; // 输出:不存在\n?>
\n\n

请注意:我们没有使用 file_put_contents()、fopen() 或其他原生 PHP 函数。所有代码都通过统一的 Filesystem 接口运行。

\n\n

主要方法/函数

\n\n

下面介绍 Flysystem 的关键方法。所有示例均假设您已创建了 $filesystem 对象。

\n\n

1. write() — 写入新文件

\n

功能: 创建新文件或覆盖现有文件。

\n

参数:

\n
    \n
  • string $path — 文件路径
  • \n
  • string|resource $contents — 文件内容(字符串或
  • \n

推荐