toropyga / base
Base libraries from Toropyga
Requires
- php: >=7.0.0
- ext-iconv: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-simplexml: *
README
Базовые функции PHP "на каждый день".
Содержание
- Общие понятия
- Установка
- Подключение
- Функции
- Конвертация массива в объект
- Конвертация объекта в массив
- Определение IP адреса
- Отладочная функция
- Проверка пароля
- Проверка даты
- Конвертация текста в заданную кодировку
- Определение кодировки текста
- Экранирование данных
- Деэкранирование данных
- Вычисление хэша строки
- Установка заголовков HEADERS
- Расчёт параметров пагинации
- Формирование XML из массива
- Получение Json или массива из XML
- Установка Cookie
- Обратимое шифрование строки
Общие понятия
Класс Base - это набор базовых функций "на каждый день". Для работы необходимо наличие PHP версии 5 и выше.
Установка
Рекомендуемый способ установки библиотеки NetContent с использованием Composer:
composer require toropyga/base
или просто скачайте и сохраните библиотеку в нужную директорию.
Подключение
require_once("vendor/autoload.php");
после этого прописываем
use FYN\Base;
Функции
Конвертация массива в объект
(для унификации и удобства)
/** * @param array $data - массив * @return object * * function ArrayToObj ($data); */
Пример:
$data = Base::ArrayToObj($data);
Конвертация объекта в массив
(для унификации и удобства)
/** * @param object $data - объект * @return array * * function ObjToArray ($data); */
Пример:
$data = Base::ObjToArray($data);
Определение IP адреса
/** * Возвращает ассоциативный массив с ключами: * 'ip' - текуций IP-адрес * 'proxy' - IP-адрес используемого прокси сервера, если возможно определить * @return array * * function getIP (); */
Пример:
$IP = Base::getIP();
Отладочная функция
для вывода на экран или возврата отформатированных данных содержащихся в переданной переменной $array
/** * @param mixed $array * @param bool $print - вывод данных на экран (true/false) * @return string * * function dump ($array = array(), $print = true); */
Пример:
Base::dump($array, true); или $dump = Base::dump($array, false);
Проверка пароля
на соответствие условиям безопасности
/** * @param string $password - проверяемая строка * @param int $len - строка имеет длину не менее указанного количества символов * @param int $type - тип строки * 0 => строка содержит хотя бы одну цифру, хотя бы один спецсимвол, хотя бы одну латинскую букву в нижнем регистре, хотя бы одну латинскую букву в верхнем регистре; * 1 => строка содержит хотя бы одну цифру, хотя бы одну латинскую букву в нижнем регистре, хотя бы одну латинскую букву в верхнем регистре; * 2 => строка содержит хотя бы одну цифру, хотя бы один спецсимвол, хотя бы одну латинскую букву; * 3 => строка содержит хотя бы одну цифру, хотя бы одну латинскую букву; * 4 => строка содержит хотя бы одну латинскую букву; * 5 => строка содержит хотя бы одну цифру; * @return bool * * function checkPassword ($password, $len = 6, $type = 0); */
Пример:
if (Base::checkPassword ($password, 8, 0)) { echo "Valid password"; } else { echo "Password is not valid"; }
Проверка даты
на существование
/** * @param string $date - проверяемая дата * @param string $format - формат проверяемой даты, по умолчанию 'd/m/Y H:i:s' * @return bool * * function validateDate($date, $format = 'd/m/Y H:i:s'); */
Пример:
$date = '09.08.2020'; $format = 'd.m.Y'; if (Base::validateDate($date, $format)) { echo "Valid date"; } else { echo "Wrong date" }
Конвертация текста в заданную кодировку
/** * @param string $line - строка с текстом * @param string $enc - заданная кодировка, utf-8 по умолчанию ('utf-8', 'ascii', 'cp1251', 'KOI8-R', 'CP866', 'KOI8-U' и т.д.) * * function convertLine ($line, $enc = 'utf-8'); */
Пример:
$text = Base::convertLine($line, 'cp1251');
Определение кодировки текста
Работает даже если не отработала функция mb_detect_encoding.
/** * @param string $string - строка с текстом * @param int $pattern_size - максимальная длина строки для парсинга * * function detect_encoding ($string, $pattern_size = 50); */
Пример:
$code = Base::detect_encoding($string);
или
$code = Base::detect_encoding($string, 100);
Экранирование данных
защищаемся от передачи вредоносных запросов
/** * @param array|string $array - строка или массив данных * @param string $code - кодировка текста, по умолчанию 'utf-8' * @return array|string * * function screeningData ($array, $code = 'utf-8'); */
Пример:
$array = Base::screeningData($array, 'cp1251');
Деэкранирование данных
/** * Деэкранирование данных * @param array $array * @return array|string * * function unscreeningData($array); */
Пример:
$array = Base::unscreeningData($array);
Вычисление хэша строки
Предварительно можно задать две глобальные переменные:
- CRYPT_TYPE - алгоритм шифрования (см. $alg)
- CRYPT_KEY - ключ шифрования (см. $key)
/** * @param string $string - строка которая шифруется * @param string $alg - алгоритм шифрования (тип используемой функции), по умолчанию md5 * 'password' => password_hash($key, PASSWORD_DEFAULT); * 'password_bcrypt' => password_hash($key, PASSWORD_BCRYPT); * 'crypt' => crypt($key); * 'crypt_site': => crypt($key, CRYPT_KEY); * 'sha1' => sha1($key); * 'hash' => hash('sha256', $key); * 'md5' => md5($key); * @param string $key - ключ шифрования для алгоритма 'crypt_site' * @return bool|string * * function getKeyHash ($string, $alg = '', $key = ''); */
Пример:
$hash = Base::getKeyHash($sfring, 'sha1');
или
$hash = Base::getKeyHash($sfring, 'crypt_site', 'your_code_word');
Установка заголовков HEADERS
/** * @param string $type - тип контента ('text/html', 'application/json', 'text/xml') * @param string $CODE - кодировка текста ('utf-8', 'ascii', 'cp1251', 'KOI8-R', 'CP866', 'KOI8-U', 'ISO-8859-1' и т.д.) * @param array $methods - допустимые методы взаимодействия ('GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE', 'PATCH') * @param string $servers - сервера с которыми допускается взаимодействие ('*' - любой, <origin> - один источник [https://google.com] , null - нежелательный параметр) * @param string $protocol - протокол передачи данных (http, https, ftp) * @param integer $lifetime - "время жизни" страницы при безопасном соединении (https) в секундах * @return bool * * function setHeaders ($type = 'text/html', $CODE = 'utf-8', $methods = array('GET', 'POST', 'OPTIONS'), $servers = '*', $protocol = 'https', $lifetime = 2400); */
Пример:
Base::setHeaders('text/json', 'utf-8', array('GET', 'POST', 'OPTIONS'), '*', 'https', 1200);
Расчёт параметров пагинации
/** * @param int $sum - общее количество записей * @param int $page - текущая страница * @param int $res_on_page - количество записей на странице (LIMIT) * @param int $pages_show - количество отображаемых закладок * @return array * keys (ключи ответа): * sum - общее количество записей * pages - общее количество страниц * page - номер отображаемой страницы * size - максимальное количество записей на страницу * size_now - количество записей на текущей странице * begin - страница с которой начинается текущий отсчёт * end - страница которой заканчивается текущий отсчёт * forward - показывать ли быстрый переход в начало (true/false) * back - показывать ли быстрый переход в конец (true/false) * * function getPagination ($sum, $page = 1, $res_on_page = 20, $pages_show = 5); */
Пример:
$pagination = Base::getPagination(187, 1, 25, 5);
Формирование XML из массива
/** * @param array $array - переданный массив * @param string|null $title - имя первичного тэга, по умолчанию 'root' * @param bool $first - первое вхождение, поддерживаем внутреннюю цикличность, если обрабатываем массив массивов, то при последующих обращениях не прописываем заголовки * @return string * * function xml_encode ($array, $title = null, $first = true); */
Пример:
$xml = Base::xml_encode ($array, $title, $first);
Получение Json или массива из XML
/** * @param string $xml - данные в формате XML * @param boolean $array - вернуть как массив (true) или вернуть как Json (false) * @return mixed * * function xml_decode ($xml, $array = true) */
Пример:
$json = Base::xml_decode($xml, false);
Установка Cookie
/** * @param string $text - значение Cookie * @param string $name - имя Cookie * @param int $live_time - срок действия Cookie в секундах с текущего момента * @param string $domain - домен определяет, на каком домене доступен файл Cookie * @param boolean $secure - передавать Cookie только по HTTPS-протоколу * @param boolean $http_only - запретить любой доступ к Cookie из JavaScript * @param string $samesite - установка доступности межсайтовых запросов к Cookie('', 'Strict', 'Lax') * @param string $path - URL-префикс пути к Cookie * * function setCookie ($text, $name, $live_time = 86400, $domain = 'localhost', $secure = true, $http_only = false, $samesite = 'lax', $path = '/') */
Пример:
Base::setCookie ($text, $name, 3600, $domain = 'localhost', true, true);
Обратимое шифрование строки
Шифрование
/** * Шифрование строки * Ключ шифрования указывается в настройках * @param string $string - шифруемая строка * * function MEncrypt ($string) */
Пример:
$encoded_text = Base::MEncrypt ('text');
Дешифрование
/** * Дешифрование строки, зашифрованной функцией MEncrypt * @param string $ciphertext - дешифруемая строка * * public function MDecrypt ($ciphertext) */
Пример:
$decoded_text = Base::MEncrypt ($encoded_text);