Download the PHP package snewer/yii2-storage without Composer
On this page you can find all versions of the php package snewer/yii2-storage. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package yii2-storage
Установка
Компонент распространяется как composer пакет и устанавливается командой
или добавлением
в composer.json файл проекта.
Настройка
Задача компонента — предоставление интерфейса для реализации хранилищ и их использование.
Компонент имеет только одно свойство buckets
, в котором
необходимо указать массив конфигураций хранилищ.
Важно! Ключами массива являются названия хранилищ, по которым в дальнейшем получается экземпляр хранилища.
Пример подключения компонента в проект:
\
Под хранилищем понимается реализация интерфейса
абстрактного класса snewer\storage\AbstractBucket
позволяющая:
- загрузить файл
- получить содержимое файла
- удалить файл
- получить web ссылку на файл
из какой-либо системы (например, файловой) или какого-либо сервиса (например, Amazon AWS).
Таким образом, для реализации хранилища необходимо унаследоваться от абстрактного класса
\ "Из коробки" доступен драйвер для локальной файловой системы
который имеет следующие свойства:
Свойство | Тип | Обятательное | Значение по-умолчанию | Описание |
---|---|---|---|---|
basePath | string | Да | Нет | Папка в файловой системе, куда будут загружаться файлы. |
baseUrl | string | array | Нет | Нет | Url до папки загрузок. Можно указать массив из нескольких путей. Тогда для каждого файла будет равномерно и однозачно выбран один из путей. * |
depth | int | Нет | 3 | Количество подпапок, создаваемое в загрузочной директории. |
* Браузеры имеют лимит на одновременное подключение к серверу. Для преодоления лимита можно использовать различные домены, указывающие на один и тот же каталог.
\ Пример настройки компонента с использованием хранилищ:
Использование
После настройки компонента использовать хранилище можно как через методы компонента, так и обращаясь непосредственно к объекту хранилища.
Пример реализации методов загрузки изображения
и получения URL ссылки на него в модели
изображения вашего проекта app\models\Image
:
Далее, в той же модели, добавим метод получения ссылки на изображение:
После чего можно загружать изображения следующим образом:
и выводить изображение в каком-либо представлении:
\ Пример реализации тех же методов с использованием объектов хранилищ:
\
Стоит заметить, что реализация метода getUrl
не зависит от названия хранилища. То есть в рамках одной и той же
модели можно организовать сложную логику хранения файлов в различных
хранилищах и легким управлением ими.