andrey-tech / utils-php
Набор трейтов, содержащих общие вспомогательные методы для работы с файлами, каталогами, данными в формате JSON и т.п.
Requires
- php: >=7.0
- ext-json: *
This package is auto-updated.
Last update: 2024-10-29 06:18:37 UTC
README
Набор трейтов, содержащих общие вспомогательные методы для работы с файлами, каталогами, данными в формате JSON и т.п.
Содержание
Требования
- PHP >= 7.0.
- Произвольный автозагрузчик классов, реализующий стандарт PSR-4.
Установка
Установка через composer:
$ composer require andrey-tech/utils-php
или добавить
"andrey-tech/utils-php"
в секцию require файла composer.json.
Трейт FileUtils
Трейт \App\Utils\FileUtils
содержит общие вспомогательные методы для работы с файлами и каталогами.
При возникновении ошибок выбрасывается исключение с объектом класса \App\AppException
.
-
getAbsoluteFileName(string $relativeFileName, bool $createDir = true) :?string
Возвращает абсолютное имя файла.$relativeFileName
- относительное имя файла для поиска в путях включения;$createDir
- создавать необходимые каталоги рекурсивно.
Метод ищет предполагаемое местонахождение файла в путях включения (include_path) по имени каталога, в переданном относительном имени файла (то есть сам файл и каталог могут отсутствовать).
Создает необходимые каталоги рекурсивно по первому пути включения.
Возвращает абсолютное имя файла илиnull
, если каталог файла отсутствует и$createDir = false
.Пример:
- пути включения (include_path):
.:/php/includes:/php/phar
; - относительное имя файла:
$relativeFileName = 'protected/temp/debug.log'
; - включено создание необходимых каталоги рекурсивно:
$createDir = true
.
Метод
getAbsoluteFileName()
будет искать каталогprotected/temp/
по каждому из путей включения:.
,/php/includes
,/php/phar
. Если каталогprotected/temp/
не найден ни по одному из путей включения, то метод создаст каталогprotected/temp/
рекурсивно по первому пути включения -.
и вернет абсолютное имя файла в этом каталоге -./protected/temp/debug.log
.
Если каталогprotected/temp/
будет найден в одном из путей включения, то метод сразу вернет абсолютное имя файла в этом каталоге.
use \App\Utils\FileUtils; class Example { use FileUtils; public function __construct() { echo get_include_path() . PHP_EOL; $relativeFileName = 'protected/temp/debug.log'; $absFileName = $this->getAbsoluteFileName($relativeFileName, $createDir = true); echo $absFileName . PHP_EOL; } } $e = new Example();
Трейт JsonUtils
Трейт \App\Utils\JsonUtils
содержит общие вспомогательные методы для преобразования данных в формат JSON и обратно.
При возникновении ошибок выбрасывается исключение с объектом класса \App\AppException
.
-
toJson(mixed $data, array|int $encodeOptions = []) :string
Кодирует данные в строку JSON.$data
- данные для преобразования;$encodeOptions
- дополнительные опции кодирования в виде массива или битовой маски.
-
fromJson(string $json, bool $assoc = true, array|int $decodeOptions = [])
Декодирует строку JSON.$json
- строка JSON для декодирования;$assoc
- преобразовывать возвращаемые объекты в ассоциативные массивы;$decodeOptions
- дополнительные опции декодирования в виде массива или битовой маски.
use \App\Utils\JsonUtils; class Example { use JsonUtils; public function __construct() { $data = [ 'array' => [ 0 => 0, 1 => 1, 2 => 2, 3 => 3 ], 'object' => [ 'a' => '1', 'b' => 2, 'c' => 3 ], ]; $json1 = $this->toJson($data, $encodeOptions = JSON_PRETTY_PRINT|JSON_PARTIAL_OUTPUT_ON_ERROR); echo $json1. PHP_EOL; $json2= $this->toJson($data, $encodeOptions = [ JSON_PRETTY_PRINT, JSON_FORCE_OBJECT ]); echo $json2. PHP_EOL; $data1 = $this->fromJson($json1); print_r($data1); $data2 = $this->fromJson($json2, $assoc = false); print_r($data2); } } $e = new Example();
Трейт Utils
Трейт \App\Utils\Utils
содержит другие общие вспомогательные методы.
При возникновении ошибок выбрасывается исключение с объектом класса \App\AppException
.
isNumericArray(mixed $variable) :bool
Проверяет, что значение переменной является НЕ ассоциативным (числовым) массивом.$variable
- переменная для проверки.
use \App\Utils\Utils; class Example { use Utils; public function __construct() { $data1 = [ 0 => 0, 1 => 1, 2 => 2, 3 => 3 ]; var_dump($this->isNumericArray($data1)); $data2 = [ 'a' => '1', 'b' => 2, 'c' => 3 ]; var_dump($this->isNumericArray($data2)); } } $e = new Example();
Автор
© 2020 andrey-tech
Лицензия
Данный код распространяется на условиях лицензии MIT.