yiisoft / yii-filesystem
此包已被废弃,不再维护。未建议替代包。
yii-filesystem
dev-master / 3.0.x-dev
2023-01-24 20:53 UTC
Requires
- php: ^8.0
- league/flysystem: ^2.0
- yiisoft/aliases: ^1.1|^2.0
- yiisoft/di: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- rector/rector: ^0.15.1
- roave/infection-static-analysis-plugin: ^1.16
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.18
This package is auto-updated.
Last update: 2023-02-24 21:00:35 UTC
README
此包已过时。请直接使用 https://flysystem.thephpleague.com/。
❌
Yii 文件系统
一个抽象文件系统,允许在不重写应用程序代码的情况下更换底层文件系统。基于 Flysystem。
要求
此包需要 PHP 8.0,并旨在与 Yii3 一起使用。
安装
composer require yiisoft/yii-filesystem
安装后,Yiisoft\Yii\Filesystem\FilesystemInterface
将自动注册到主应用程序容器中。此接口提供了一个带有根目录的本地文件系统,根目录由 aliases
参数的 @root
别名定义。
入门
可以通过 DI 容器自动装配来获取该服务
public function view(\Yiisoft\Yii\Filesystem\FilesystemInterface $filesystem) { $someFileContent = $filesystem->read('/runtime/somefile.txt'); //... }
您也可以使用别名
$someFileContent = $filesystem->write('@views/site/testfile.txt', 'Test content');
配置
如以下所述,可以在 config/params.php
中配置额外的文件系统
'file.storage' => [ 'runtimeStorage' => [ 'adapter' => [ 'class' => \League\Flysystem\Local\LocalFilesystemAdapter::class, '__construct()' => [ dirname(__DIR__) . '/runtime', \League\Flysystem\UnixVisibility\PortableVisibilityConverter::fromArray([ 'file' => [ 'public' => 0644, 'private' => 0600, ], 'dir' => [ 'public' => 0755, 'private' => 0700, ], ]), LOCK_EX, \League\Flysystem\Local\LocalFilesystemAdapter::DISALLOW_LINKS ] ], 'aliases' => [ '@cache' => '@root/cache', ] ], 'documentStorage' => [ 'adapter' => [ 'class' => \League\Flysystem\Local\LocalFilesystemAdapter::class, '__construct()' => [ dirname(__DIR__) . '/docs', \League\Flysystem\UnixVisibility\PortableVisibilityConverter::fromArray([ 'file' => [ 'public' => 0644, 'private' => 0600, ], 'dir' => [ 'public' => 0755, 'private' => 0700, ], ]), LOCK_EX, \League\Flysystem\Local\LocalFilesystemAdapter::DISALLOW_LINKS ] ], 'aliases' => [ '@invoices' => '@root/export/invoices', '@orders' => '@root/export/orders', ], ], ],
别名 runtimeStorage
和 documentStorage
将自动注册到主应用程序容器中。因此,您可以从容器中获取它们
public function index(ContainerInterface $container) { $documentStorage = $container->get('documentStorage'); }
如果您希望使用自动装配,则可以为您自己的文件系统创建一个自定义接口。
interface ImageStorageInterface extends \Yiisoft\Yii\Filesystem\FilesystemInterface { }
然后在 params
中注册它
'file.storage' => [ ImageStorageInterface::class => [ 'adapter' => [ 'class' => \League\Flysystem\Local\LocalFilesystemAdapter::class, '__construct()' => [ dirname(__DIR__) . '/storage/images', \League\Flysystem\UnixVisibility\PortableVisibilityConverter::fromArray([ 'file' => [ 'public' => 0644, 'private' => 0600, ], 'dir' => [ 'public' => 0755, 'private' => 0700, ], ]), LOCK_EX, \League\Flysystem\Local\LocalFilesystemAdapter::DISALLOW_LINKS ] ], ], ]
现在您可以这样使用它
//controller action public function addImage(ImageStorageInterface $imageStorage) { //get image stream... $imageStorage->writeStream('/path/to/image/myimage.jpeg', $myImageStream); }
您可以在 Flysystem 文档 中找到关于 FilesystemInterface
方法的文档。
单元测试
此包使用 PHPUnit 进行测试。要运行测试
./vendor/bin/phpunit
突变测试
此包的测试使用 Infection 突变框架进行验证。要运行它
./vendor/bin/infection
静态分析
代码使用 Psalm 进行静态分析。要运行静态分析
./vendor/bin/psalm
支持项目
关注更新
许可证
Yii 文件系统是自由软件。它遵循BSD许可证发布。请参阅许可证
获取更多信息。
由Yii 软件维护。