phossa2 / storage
适用于本地或远程存储系统的存储前端
Requires
- php: ~5.4|~7.0
- phossa2/shared: ^2.0.23
Requires (Dev)
- phpunit/phpunit: 4.*
Provides
- psr/log-implementation: 1.0.0
This package is not auto-updated.
Last update: 2024-09-15 01:32:26 UTC
README
phossa2/storage 是一个支持本地或云存储的 PHP 存储库。
它需要 PHP 5.4,支持 PHP 7.0+ 和 HHVM。它符合 PSR-1、PSR-2、PSR-3、PSR-4 以及提议的 PSR-5。
安装
使用 composer
工具安装。
composer require "phossa2/storage"
或者在您的 composer.json
中添加以下行
{ "require": { "phossa2/storage": "2.*" } }
简介
-
简单的、类似 RESTful 的 API。
-
统一路径语法,如
/local/img/avatar.jpg
适用于所有系统。 -
挂载和卸载
filesystem
。 -
支持不同的
drivers
。 -
支持
stream
。
使用方法
创建存储实例
use Phossa2\Storage\Storage; use Phossa2\Storage\Filesystem; use Phossa2\Storage\Driver\LocalDriver; // mount local dir '/www/storage' to '/local' $storage = new Storage( '/local', new Filesystem('/www/storage') ); // add a file $filename = '/local/newfile.txt'; $storage->put($filename, 'this is the content'); // check existens if ($storage->has($filename)) { // read file content $str = $storage->get($filename); // delete the file $storage->del($filename); } // mount another filesystem $storage->mount('/aws', new Filesystem(new AwsDriver()));
功能
-
支持简单的、直观的 API,如
get()
、put()
、has()
和del()
等。其他 API 如
-
meta()
获取文件的元数据
// get the meta data if ($storage->has($file)) { $meta = $storage->meta($file); } // update meta data $new = ['mtime' => time()]; $storage->put($file, null, $new);
-
copy()
和move()
在文件系统中复制或移动文件
// move to another name $storage->move('/local/README.txt', '/local/README.bak.txt'); // copy into another filesystem's directory $storage->copy('/local/README.txt', '/aws/www/');
-
-
使用统一路径语法,如 `/local/dir/file.txt`,适用于包括 Windows 在内的所有系统。底层驱动负责透明地转换路径。
$storage = new Storage( '/disk/d', new Filesystem(new LocalDriver('D:\\\\')) ); $storage->put('/disk/d/temp/newfile.txt', 'this is content');
-
filesystem
是不同驱动程序的包装,具有权限。用户可以如下挂载只读文件系统:// mount as readonly, default is Filesystem::PERM_ALL $storage->mount( '/readonly', new Filesystem( '/home/www/public', Filesystem::PERM_READ ) ); // will fail $storage->put('/readonly/newfile.txt', 'this is the content');
不同的文件系统可能使用相同的驱动程序
$driver = new LocalDriver('/home/www/public'); // writable $storage->mount('/public', new Filesystem($driver)); // readonly $storage->mount('/readonly', new Filesystem($driver, Filesystem::PERM_READ));
文件系统可能相互重叠
// mount root $storage->mount('/', new Filesystem(...)); // mount var $storage->mount('/var', new Filesystem(...)); // mount cache $storage->mount('/var/cache', new Filesystem(...));
-
支持不同驱动程序,包括本地或云存储。
-
如下写入和读取流:
// read stream $stream = $storage->get('/local/thefile.txt', true); // write with stream $storage->put('/local/anotherfile.txt', $stream); // close it if (is_resource($stream)) { fclose($stream); }
API
-
-
bool has(string $path)
检查
$path
是否存在。 -
null|string|array|resource get(string $path, bool $getAsStream)
获取
$path
的内容。-
如果未找到或失败,则返回
NULL
。 -
如果
$path
是目录,则返回此$path
下文件的完整路径数组。 -
如果
$getAsStream
是true
,则返回流处理器。
-
-
bool put(string $path, string|resource|null $content, array $meta = [])
设置
$path
的内容或元数据。 -
bool del(string $path)
删除
$path
。如果$path
是目录,则删除此路径下的所有文件以及该路径本身(除非它是挂载点)。 -
bool copy(string $from, string $to)
和bool copy(string $from, string $to)
复制或移动
$from
到$to
。 -
array meta(string $path)
获取
$path
的元数据。如果未找到或错误,则返回[]
。 -
Phossa2\Storage\Path path(string $path)
返回一个
Phossa2\Storage\Path
对象
-
-
-
bool hasError()
是否有错误?
-
string getError()
获取之前的错误信息。如果没有错误,则返回
''
。if (!$storage->copy('/local/from.txt', '/local/to.txt')) { $err = $storage->getError(); }
-
string getErrorCode()
获取错误代码的数字字符串。
-
变更日志
请参阅变更日志获取更多信息。
贡献
请参阅贡献指南获取更多信息。
依赖关系
-
PHP >= 5.4.0
-
phossa2/shared >= 2.0.23