add DOC
This commit is contained in:
31
DOC/README.md
Normal file
31
DOC/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# LE Framework Documentation
|
||||
|
||||
## What is it?
|
||||
**LE** - это легковесный, минималистичный фреймворк на PHP, название это аббревиатура Light Elephant, название может показаться парадоксальным как легкий слон, но так оно и есть, слон - это логотип PHP, от того и слон.
|
||||
|
||||
Проект хоть и опубликован в 2021, но был создан еще 14 лет назад в 2007 году, тогда я использовал разные CMS для простейших интернет-магазинов и сайтов визиток, растространеные Shared-хостинги очень тормозили, первое что попытался сделать - доработать CMS и оптимизировать производительность, но в типичной CMS тысячи строк кода со сложной вложенностью классов.
|
||||
|
||||
Первая версия интернет-магазина состояла из админки, в которой был список заказов и формы импорта каталога, люди просто загрузали csv файл с товарами и ценами и это все загружалось в базу, на внешней части магазина был просто каталог с кнопкой корзины и сама корзина с несколькими полями для оформления заказа. Проект получился настолько быстрым, что мог работать на самых дешевых хостингах.
|
||||
|
||||
Всё это сопровождалось и развивалось долгие годы, накопилась огромная кодовая база, многие интернет-магазины уже ушли на другие решения, но полученное решение я использовал и для консольных скриптов и для различных ботов.
|
||||
|
||||
Мне не хотелось бы закопать всё то что получилось, поэтому решил отрефакторить и слегка актуализировать самописный фреймворк, поэтому в 2021 году решил сделать публичную версию.
|
||||
|
||||
Код фреймворка настолько простой и минималистичный, что разобраться во всех классах и логике работы можно за пару часов, естественно, не обойдусь без сторонних библиотек других авторов, копирайты будут как в самих файлах, так и в файле **copyrights.txt**
|
||||
|
||||
Функционал будет добавляться по мере его подготовки и адаптации под новую логику в этот репозиторий, параллельно будет писаться документация на каждый класс.
|
||||
|
||||
По любым вопросам можно общаться на почту <pavelbbb@gmail.com>
|
||||
|
||||
---
|
||||
|
||||
## Предупреждение
|
||||
Данный код не имеет ничего общего с работающими на данный момент проектами, структура, логика, названия файлов и классов, почти все перепиливается с нуля, тут не будет конкретных кастомных модулей созданных для конкретных проектов, только фундаментальный функционал для быстрого создания специализированных приложений на PHP.
|
||||
|
||||
## Базовые классы
|
||||
> Документация в разработке, если нет ссылки, значит еще не написал
|
||||
* LE_FS - класс для работы с файлами
|
||||
* [LE_IMG](core_classes/LE_IMG.md) - класс для работы с изображениями
|
||||
* LE_MYSQL - класс для работы с базой MYSQL
|
||||
* LE_SQLITE - класс для работы с базой SQLITE
|
||||
* LE_TPL - шаблонизатор
|
||||
106
DOC/core_classes/LE_IMG.md
Normal file
106
DOC/core_classes/LE_IMG.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# LE_IMG class by Pavel Belyaev
|
||||
|
||||
Данный класс создан для простейших манипуляций с изображениями в формате jpeg, png и gif.
|
||||
|
||||
Для работы данного класса требуется библиотека GD
|
||||
|
||||
Класс делится на основные функции и вспомогательные, вспомогательные используются самим классом для работоспособности основных функций, но иногда может быть полезным использовать эти вспомогательные функции как самостоятельные для реализации специфичного функционала в вашем приложении...
|
||||
|
||||
## Основные функции
|
||||
|
||||
### Изменение размера изображения
|
||||
|
||||
#### Пропорциональное
|
||||
|
||||
Просто вписывает изображение в прямоугольник заданных размеров, если изображение меньше, то размер не меняется
|
||||
```php
|
||||
LE_IMG::resize($inp_path,$out_path,$max_width,$max_height);
|
||||
```
|
||||
* `$inp_path` и `$out_path` - путь до исходной картинки и путь куда сохранять результат
|
||||
* `$max_width` и `$max_height` - размер, в который нужно вписать изображение
|
||||
|
||||
#### Пропорциональное с подрезкой
|
||||
Данная функция красиво подрезает картинку, т.е. сперва вписывает в размер так, чтобы оно вылезало за пределы прямоугольника, но не было меньше, а дальше подрезает лишнее равномерно с каждой стороны. Если изображение после ресайза вписывается в заданную область, то ничего не вылезает и не подрезается.
|
||||
```php
|
||||
LE_IMG::resize_crop($inp_path,$out_path,$max_width,$max_height);
|
||||
```
|
||||
### Простая подрезка картинки
|
||||
Иногда нужно к примеру просто срезать произвольный участок с произвольной стороны картинки
|
||||
```php
|
||||
LE_IMG::crop($inp_path,$out_path,$left_crop,$top_crop,$right_crop,$bottom_crop);
|
||||
```
|
||||
|
||||
### Наложение водяных знаков (watermark)
|
||||
|
||||
#### Наложение на картинку текста по диагонали
|
||||
```php
|
||||
$conf = [
|
||||
'text'=>'mytext',
|
||||
'font'=>'/path_to_font.ttf',
|
||||
'rgb'=>'78,78,78,40' //необязательный параметр
|
||||
];
|
||||
|
||||
LE_IMG::watermark1($path_to_img,$conf);
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### Наложение прозрачного png на картинку
|
||||
```php
|
||||
LE_IMG::watermark2($path_to_img,$stamp_path,$skeep_err=1);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
___
|
||||
|
||||
|
||||
## Вспомогательные функции
|
||||
|
||||
### Загрузка картинки
|
||||
На вход передается путь до файла изображения
|
||||
> Данная функция используется методами resize, resize_crop, crop, watermark1, watermark2
|
||||
```php
|
||||
list($width,$height,$type,$img_resource) = LE_IMG::LOAD($path);
|
||||
```
|
||||
|
||||
Возвращаeт `array` или `false` если файла нет или у файла неподдерживаемый тип
|
||||
* `$type=1` - GIF
|
||||
* `$type=2` - JPEG
|
||||
* `$type=3` - PNG
|
||||
|
||||
### Сохранение картинки
|
||||
Сохраняет картинку после всех манипуляций с ресурсом LibGD
|
||||
```php
|
||||
LE_IMG::SAVE($img_resource,$type,$path);
|
||||
```
|
||||
|
||||
### Вычисление новых размеров для ресайза
|
||||
|
||||
#### Пропорциональное уменьшение
|
||||
```php
|
||||
list ($new_width,$new_height) =
|
||||
LE_IMG::calc_prop($width,$height,$width_out,$height_out,$max=0);
|
||||
```
|
||||
|
||||
calc_prop уменьшает ширину, если она больше нужной, и пропорционально высоту, далее тоже самое с высотой
|
||||
|
||||
* `$width`, `$height` - текущие ширина и высота картинки в пикселях
|
||||
* `$width_out`, `$height_out` - размеры, в которые нужно вписать картинку, обычно ограничивающие значения по ширине и высоте, если одно из значений превышает заданное, то второе пропорционально уменьшается
|
||||
* `$max` - если передать этот параметр 1 или true, то поведение функции меняется, картинку меньше нужного размера тянет на нужные размеры, да, будет мыльно, но не всегда, при наложении прозрачной картинки на картинку немного большего размера ничего не поплывет...
|
||||
|
||||
#### Уменьшение для подрезки
|
||||
Иногда при уменьшении картинки она к примеру превращается в прямоугольник, тогда как нужно ее превратить в квадрат, т.е. уменьшить до такого прямоугольника, у которого одна из сторон будет побольше, а далее большую сторону подрезать
|
||||
```php
|
||||
list ($new_width,$new_height) =
|
||||
LE_IMG::calc_prop2($width,$height,$width_out,$height_out);
|
||||
```
|
||||
|
||||
## ToDo
|
||||
* Реализовать crop для картинок отличных от квадратных (тест)
|
||||
* Для resize_crop устранить раздутие картинки, если входное изображение меньше, делать уменьшенную версию...
|
||||
* Добавить поддержку webp
|
||||
|
||||
|
||||
## Changelog
|
||||
36
DOC/core_classes/doc__LE_FS.md
Normal file
36
DOC/core_classes/doc__LE_FS.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# LE\_FS - класс для работы с файловой системой и файлами
|
||||
|
||||
## GEN\_FNAME($inp\_name, $path, $prefix);
|
||||
|
||||
example
|
||||
|
||||
```
|
||||
LE_FS::GEN_FNAME("picture.png",WEBDIR."/pub_data/","prod_");
|
||||
```
|
||||
|
||||
Генерирует уникальное имя файла для указанной папки, расширение нового файла соответствует расширению входного в `$inp_name`
|
||||
|
||||
Опционально к имени файла в начале пристыковывается в префикс, например `prod_` `cat_` ...
|
||||
***
|
||||
|
||||
## Apply2Files($path,&$func,$recouse=0)
|
||||
|
||||
> Данная функция создана для обработки массива данных
|
||||
```
|
||||
LE_FS::Apply2Files("./inp_folder/",$callback,0);
|
||||
```
|
||||
|
||||
* `$path` \- путь до папки
|
||||
* `$func` \- callback функция в которую передается полный путь до файла
|
||||
* `$recourse` \- признак рекурсивности\, по умолчанию применяется только к указанной папке\, но если указан флаг то пройдет по всем подпапкам
|
||||
>Внутри callback функции нужно предусматривать фильтрацию по расширению файла, например только xml или только jpg...
|
||||
>
|
||||
## SAVE_POST($inp,&$debug=false) - сохранение файла из POST
|
||||
Сохраняет файл переданный в POST с указанным именем поля формы в POST в указанную папку `<input type="file" name="img_file">`
|
||||
```
|
||||
LE_FS::SAVE_POST(['f_name'=>'img_file','path'=>'/www/path/'])
|
||||
```
|
||||
|
||||
Уникальное имя файлов генерируется автоматически...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user