Набор трейтов, содержащих общие вспомогательные методы для работы с файлами, каталогами, данными в формате JSON и т.п.
- PHP >= 7.0.
- Произвольный автозагрузчик классов, реализующий стандарт PSR-4.
Установка через composer:
$ composer require andrey-tech/utils-php
или добавить
"andrey-tech/utils-php"
в секцию require файла composer.json.
Трейт \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();
Трейт \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();
Трейт \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.