1. Go to this page and download the library: Download masterflash-ru/storage library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
masterflash-ru / storage example snippets
........
/*хранилище и обработка (ресайз) фото*/
"storage"=>[
/*хранит загруженные файлы, готовые для обработки
это промедуточное хранение
*/
'data_folder'=>"data/images",
/*
*Именованные хранилища фото в виде множества вложенных папок
*по умолчанию имеется всегда default
*уровень вложений и размеры имен каталогов определяются параметром в фильтр CopyToStorage
*/
'file_storage'=>[
'default'=>[
'base_url'=>"media/pics/",
],
],
/*чистить хранилище только по расписанию, используется при очень больших хранилищах
*когда за текущую операцию не успевает обойти все каталоги
* включите по расписанию обращение к адресу http://site.ru/clear-storage-cron
*/
"clear_storage_only_cron"=>false,
'items'=>[
/*хранилище для ленты новостей, ключ это имя секции, которая используется для работы
*он же является именем раздела, под которым записываются и считываются файлы*/
"news"=>[
"description"=>"Хранение фото новостей",
'file_storage'=>'default', /*имя хранилища*/
'file_rules'=>[
'admin_img'=>[
'filters'=>[
CopyToStorage::class => [ /*Наличе этого фильтра ОБЯЗАТЕЛЬНО!*/
'folder_level'=>1,
'folder_name_size'=>3,
'strategy_new_name'=>'translit' /*стратегия создания нового имени, none, md5, sha1, translit, uniqid*/
],
ImgResize::class=>[
"method"=>1,
"width"=>150,
"height"=>150,
'adapter'=>Gd::class,
],
ImgOptimize::class=>[
"jpegoptim"=>85,
"optipng"=>3,
],
Watermark::class=>[
"waterimage"=>"data/images/water2.png",
'adapter'=>'Consoleimagick',
],
],
'validators' => [/*валидаторы достаточно применить для одной ветки, т.к. последующие ветки используют исходное изображание вновь*/
IsImage::class=>[],
ImageSize::class => [
'minWidth' => 500,
'minHeight' => 250,
],
],
],
'anons'=>[
'filters'=>[
CopyToStorage::class => [
'folder_level'=>1,
'folder_name_size'=>3,
],
ImgResize::class=>[
"method"=>1,
"width"=>500,
"height"=>250,
'adapter'=>'gd',
],
],
],
],
],//news
],
],
.......
/*объект ImagesLib регистрируется в менеджере, его можно извлечь в фабриках, если нужна обработка*/
use Mf\Storage\Service\ImagesLib;
/*получить экземпляр*/
$imglib=$container->get(ImagesLib::class);
/*
вначале нужно выбрать секцию из конфига, в которой указаны правила обработки фото (куда писать, и как уменьшать)
$name - имя секции конфига с правилами обработки файлов, из примера выше это "news"
*/
$ImgLib->selectStorageItem($name);
/*
далее нужно передать исходный файл в виде пути и имени, имя раздела и идентификатор записи раздела
$filename - исходное имя файла, как правило в data/datastorage,
$razdel - имя раздела, например, news (обычно совпадает с именем массива фото, и равно ключу в имени конфига),
$razdel_id - внутренний идентификатор элемента, например, ID новости в ленте
*/
$ImgLib->saveImages($filename,$razdel,$razdel_id);
/*
$razdel_name - строка имени раздела, например, news
$id - ID новости, или какой-либо идентификатор под которым хранится изображение,
$item_name - имя самого изображения, например, anons
полностью готовый URL путь+имя файла для подставновки в тег <img>
*/
$img=$ImgLib->loadImage($razdel_name,$id,$item_name);
//$razdel_name - имя раздела
$id - идентификатор раздела, например, ID новости
$ImgLib->deleteFile($razdel_name,$id);
//$razdel_name - имя раздела
$ImgLib->deleteFileRazdel($razdel_name);