yiisoft/yii-filesystem

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

yii-filesystem

dev-master / 3.0.x-dev 2023-01-24 20:53 UTC

This package is auto-updated.

Last update: 2023-02-24 21:00:35 UTC


README

此包已过时。请直接使用 https://flysystem.thephpleague.com/

68747470733a2f2f796969736f66742e6769746875622e696f2f646f63732f696d616765732f7969695f6c6f676f2e737667

Yii 文件系统


一个抽象文件系统,允许在不重写应用程序代码的情况下更换底层文件系统。基于 Flysystem

Latest Stable Version Total Downloads Build status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

要求

此包需要 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',
        ],
    ],
],

别名 runtimeStoragedocumentStorage 将自动注册到主应用程序容器中。因此,您可以从容器中获取它们

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

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack

许可证

Yii 文件系统是自由软件。它遵循BSD许可证发布。请参阅许可证获取更多信息。

Yii 软件维护。