[extension] denisok94/helper


Helper Class

  1. include
  2. Использование
  3. Yii2

Класс с набором полезных функций, по мнению автора.
Не претендует на идеальность и единственное верное решение.
A class with a set of useful functions, according to the author.
It does not pretend to be ideal and the only correct solution.

___
0. Установка
1. [include](#include)

  1. Использование
    1. ArrayHelper
    2. DataHelper
    3. StringHelper
    4. FileHelper
    5. HtmlHelper
    6. OtherHelper
  2. MicroTimer
  3. Framework Integration
    1. Yii2

Установка Run:
composer require --prefer-dist denisok94/helper
# or
php composer.phar require --prefer-dist denisok94/helper

or add to the require section of your composer.json file:
"denisok94/helper": "*"

composer update
# or
php composer.phar update

include Если вы скачали репозиторий архивом (zip/tar).
Можно создать в любом удобном месте своего приложения файл H.php с классом H и унаследовать его от Helper.
include_once '{path to repository}/src/Helper.php';
use \denisok94\helper\Helper;
class H extends Helper {}

Использование use \denisok94\helper\Helper as H;

Можно создать в любом удобном месте своего приложения файл H.php с классом H и унаследовать его от Helper.
Внутри класса H добавить свои функции с повторяющемся действиями или перезаписать имеющиеся в Helper.
namespace app\components;
use \denisok94\helper\Helper;
class H extends Helper {}

И в дальнейшем использовать его.
use app\components\H;

ArrayHelper Работа с массивами

Имя Параметры Описание

get Найти в массиве по пути
set Добавить/заменить элемент в массиве
parse Заменить шаблон
implodeWrap Объединяет элементы массива в строку + обернуть текст в кавычки
implodeWith Объединяет элементы массива в строку, с предпользовательской обработкой
toJson Преобразовать массив в json
toArray Преобразовать json в массив
arrayOrderBy Сортировка массива

DataHelper

Имя Параметры Описание

currentDate Сегодняшняя дата
currentDt Сегодняшняя дата и время
toMysqlDate Преобразовать дату в формат Mysql
toMysqlDt Преобразовать дату и время в формат Mysql
toRuDate Русский формат даты
toRuDt Русский формат даты и времени
stampToDt Преобразовать timestamp в формат даты и времени
stampToDtU Преобразовать timestamp в формат даты и времени с миллисекундами

StringHelper

Имя Параметры Описание

uuid Сгенерировать uuid v4
random Сгенерировать рандомную строка
spell падежи к числительным
slug преобразовать строку в человекопонятный url
ru2Lat Транслитирование, ГОСТ 7.79-2000, схема А
ruToLat Транслитирование, ГОСТ 7.79-2000, схема Б
ru2Slug преобразовать строку, на русском (схема А), в человекопонятный url
getClassName Получить имя класса
slashes экранирование

FileHelper Работа с файлами

Имя Параметры Описание

ext Получить расширение файла
fileRead Показать содержимое файла
fileGetDt Получить дату последнего изменения
fileType Получить тип файла
fileIcon Получить название иконки для файла
fileIconFa Получить название иконки для файла в формате Font Awesome 4/5
fileShortSize короткий размер файла
shortSize 2048 → 2.00 KB
parseSize 2.00 KB → 2048
dirSize Получить размер папки

HtmlHelper Генерация html тегов
> в разработке...

Имя Параметры Описание

video видео тег

OtherHelper

Имя Параметры Описание

curl curl для большинства простых запросов
getRequest параметры запроса
getUserIp получить IP пользователя
isBot Проверка пользователя на бота
msleep уснуть на N секунд

isBot() не даёт 100% гарантии.
Кому разрешить/запретить доступ/функционал - решать исключительно Вам.
Запрещая всё и всем, Вы можете лишится продвижения сайта в поисковых ресурсах и/или красивых привью в соц сетях =).
___

MicroTimer Узнать, сколько времени выполняется код
use \denisok94\helper\MicroTimer;
$queryTimer = new MicroTimer(); // start
// code ...
$queryTimer->stop();

// result:
$time = $queryTimer->elapsed();
// or/and
printf($queryTimer);

взято у phpliteadmin
___

Framework Integration Yii2 use \denisok94\helper\YiiHelper;

YiiHelper наследует все от Helper.

Имя Параметры Описание

exec Выполнить консольную команду
log Записать данные в лог файл. Файлы хранятся в runtime/logs/
setCache Запомнить массив в кэш
getCache Взять массив из кэша
clearCache Удалить кэш

Можно создать в папке components файл H.php с классом H и унаследовать его от YiiHelper.
Внутри класса H добавить свои функции с повторяющемся действиями или перезаписать имеющиеся в YiiHelper.
namespace app\components;
use \denisok94\helper\YiiHelper;
class H extends YiiHelper {}

И в дальнейшем использовать его.
use app\components\H;

В кэш можно сохранить результат запроса из бд, который часто запрашивается, например для фильтра.
К тому же, этот фильтр, может быть, использоваться несколько раз на странице или сама страница с ним, может, многократно обновляться/перезагружаться.
use app\components\H;

class Filter
{
//.....
/**
* @return array
*/
public static function getTypes()
{
$types = H::getCache('types'); // dir: app/cache/types.json
if ($types) {
return $types;
} else {
$types = \app\models\Types::find()
->select(['id', 'name'])
->asArray()
->all();
$array = [];
foreach ($types as $key => $value) {
$array[$value['id']] = ucfirst($value['name']);
}

H::setCache('types', $array);
return $array;
}
}
}

MetaTag Генерация мета тегов.
use \denisok94\helper\yii2\MetaTag;

Пока, реализованы простые теги, позже, доработаю остальные.

Имя Параметры Описание

tag Установить MetaTag на страницу

Указываются в action контроллере, перед render().
`php
namespace app\controllers;
use \denisok94\helper\yii2\MetaTag;
class NewsController extends Controller
{
// ...
public function actionView($id)
{
$model = $this->findModel($id);
MetaTag::tag($this->view, [
'title' => $model->title,
'description' => substr($model->text, 0, 100),
'keywords' => $model->tags, // string
'image' => $model->image->url,
]);
return $this->render('view', [
'model' => $model,
]);
}
// ...

}
`
___
StatusController Для общения по формату json. (REST API)
namespace app\controllers;
use \denisok94\helper\yii2\StatusController;

class MyController extends StatusController
{
// code
}

// получить всё сообщение полностью
$message = $this->post;
// получить параметр из сообщения
$phone = $this->getPost('phone');

Сообщить об успехе
// Сообщить об успешной обработки
return $this->success(); // ['status' => 'OK', 'data' => []];
// Вернуть результат работы
return $this->success($data); // ['status' => 'OK', 'data' => $data];

Сообщить об ошибке
\Yii::$app->response->statusCode = 400; // or status http code
return $this->error($error, $text, $data); // ['status' => 'FAIL', ...]

Собственный формат ответа
`php
// custom responses
$responses = [];
// code
return $this->send($responses);
`
___
ConsoleController namespace app\commands;
use \denisok94\helper\yii2\ConsoleController;

class MyController extends ConsoleController
{
// code
}

Вызвать action консольного контроллера:
`php
H::exec('сontroller/action', [params]);
`
> Консольный контроллер, не подразумевает ответ.
Вся выводящая информация (echo, print и тд) будет записана в лог файл.
При вызове через H::exec(), по умолчанию логи находятся в /runtime/logs/consoleOut.XXX.log (можно переопределить)
Получить переданные параметры
`php
$init = $this->params;
`
Пример:
`php
class MyController extends ConsoleController
{
public function actionTest()
{
$init = $this->params;
$test = $this->params['test'];
}

}
H::exec('my/test', ['test' => 'test']);
`