From 24040bec896c192125fd8435704745f2b087bac2 Mon Sep 17 00:00:00 2001 From: andrey-tech Date: Sun, 7 Feb 2021 11:51:58 +0300 Subject: [PATCH] Changes for classes HTTP 3.0 and DebugLogger 2.0 --- README.md | 160 +++++++++++++++++-------------- composer.json | 4 +- src/App/Bitrix24/Bitrix24API.php | 27 ++++-- 3 files changed, 111 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 889fb83..d338e61 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ - [Требования](#%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) - [Установка](#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0) -- [Класс `\App\Bitrix24\Bitrix24API`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appbitrix24bitrix24api) +- [Класс `Bitrix24API`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-bitrix24api) - [Базовые методы класса](#%D0%91%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0) - [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B) - [Методы для работы с сущностями Битрикс24](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D1%8F%D0%BC%D0%B8-%D0%91%D0%B8%D1%82%D1%80%D0%B8%D0%BA%D1%8124) @@ -29,13 +29,14 @@ - [Методы для работы с делами](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B4%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8) - [Методы для работы с диском](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%BC) - [Вспомогательные классы](#%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B) - - [Класс `\App\HTTP`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-apphttp) + - [Класс `HTTP`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-http) - [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B-1) - [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B) - - [Класс `\App\DebugLogger`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger) + - [Класс `DebugLogger`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-debuglogger) - [Методы класса](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0) - [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B-2) - [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B-1) + - [Формат заголовков лога](#%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%BE%D0%B2-%D0%BB%D0%BE%D0%B3%D0%B0) - [Автор](#%D0%90%D0%B2%D1%82%D0%BE%D1%80) - [Лицензия](#%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F) @@ -45,8 +46,8 @@ ## Требования - PHP >= 7.0; -- класс [`\App\HTTP`](https://github.com/andrey-tech/http-client-php) - НТТР(S) клиент с троттлингом запросов; -- класс [`\App\DebugLogger`](https://github.com/andrey-tech/debug-logger-php) - логгер, позволяющий сохранять отладочную информацию в файл; +- класс [`HTTP`](https://github.com/andrey-tech/http-client-php) >= 3.0 - НТТР(S) клиент с троттлингом запросов, поддержкой маркера BOM в теле сообщения формата JSON и выводом отладочной информации о запросах и ответах в STDOUT; +- класс [`DebugLogger`](https://github.com/andrey-tech/debug-logger-php) >= 2.0 - логгер, сохраняющий отладочную информацию в файл вместе с данными об объеме используемой оперативной памяти и прошедшем времени; - произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/). @@ -55,22 +56,22 @@ Установка через composer: ``` -$ composer require andrey-tech/bitrix24-api-php:"^1.5" +$ composer require andrey-tech/bitrix24-api-php:"^1.6" ``` или добавить ``` -"andrey-tech/bitrix24-api-php": "^1.5" +"andrey-tech/bitrix24-api-php": "^1.6" ``` в секцию require файла composer.json. - -## Класс `\App\Bitrix24\Bitrix24API` + +## Класс `Bitrix24API` Для работы с REST API Битрикс24 используется класс `\App\Bitrix24\Bitrix24API`. -При возникновении ошибок выбрасывается исключение с объектом класса `\App\Bitrix24\Bitrix24APIException`. +При возникновении ошибок выбрасывается исключение класса `\App\Bitrix24\Bitrix24APIException`. В настоящее время в классе реализованы методы для работы со следующими сущностями Битрикс24: - [Сделки](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0%D0%BC%D0%B8) @@ -97,6 +98,7 @@ $ composer require andrey-tech/bitrix24-api-php:"^1.5" - `buildCommands(string $function, array $items) :array` Создает массив команд для пакетного запроса. - `buildCommand(string $function, array $params) :string` Возвращает команду для пакетного запроса. - `getLastResponse() :?array` Возвращает последний ответ от API. +- `setLogger($logger)` Устанавливает объект класса, выполняющего логирование отладочной информации в файл. Параметры методов: @@ -105,7 +107,8 @@ $ composer require andrey-tech/bitrix24-api-php:"^1.5" + `$params` - параметры запроса; + `$commands` - пакет команд; + `$items` - массив полей запросов; -+ `$halt` - прерывать последовательность запросов в случае ошибки. ++ `$halt` - прерывать последовательность запросов в случае ошибки; ++ `$logger` - объект класса, реализующего интерфейс `\App\DebugLogger\DebugLoggerInterface`. ### Дополнительные параметры @@ -115,8 +118,8 @@ $ composer require andrey-tech/bitrix24-api-php:"^1.5" Нестатическое свойство | По умолчанию | Описание ----------------------- | ------------------ | -------- `$batchSize` | 50 | Устанавливает количество команд в одном пакете запросов (batch) -`$logger` | null | Хранит объект класса `\App\DebugLogger`, выполняющего логирование запросов и ответов к API в файл -`$http` | `object \App\HTTP` | Хранит объект класса `\App\HTTP`, отправляющего запросы к API +`$logger` | null | Хранит объект класса `\App\DebugLogger\DebugLogger`, выполняющего логирование запросов и ответов к API в файл. Если null, то логирование не выполняется. +`$http` | `\App\HTTP\HTTP` | Хранит объект класса `\App\HTTP\HTTP`, отправляющего запросы к API Статическое свойство | По умолчанию | Описание ----------------------- | ------------------ | -------- @@ -178,7 +181,6 @@ $ composer require andrey-tech/bitrix24-api-php:"^1.5" ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -257,7 +259,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -300,7 +302,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -364,7 +365,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -404,7 +405,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -455,7 +455,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -481,7 +481,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -498,7 +497,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -535,7 +534,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -592,7 +590,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -628,7 +626,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -669,7 +666,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -696,7 +693,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -721,7 +717,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -731,7 +727,7 @@ try { Методы для работы с задачами находятся в трейте `\App\Bitrix24\Task`: -- `getTask($taskId, array $select = []) :?array` Возращает задачу по ID. +- `getTask($taskId, array $select = []) :?array` Возвращает задачу по ID. - `addTask(array $fields = []) :int` Добавляет новую задачу. - `addTasks(array $tasks = []) :array` Пакетно добавляет задачи. - `getTaskFields() :array` Возвращает описание полей задачи. @@ -746,7 +742,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -771,7 +766,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -795,7 +790,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -834,7 +828,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -864,7 +858,6 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; try { @@ -895,7 +888,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -903,35 +896,36 @@ try { ## Вспомогательные классы - -### Класс `\App\HTTP` + +### Класс `HTTP` -Класс [`\App\HTTP`](https://github.com/andrey-tech/http-client-php) обеспечивает: +Класс [`\App\HTTP\НТТР`](https://github.com/andrey-tech/http-client-php) обеспечивает: - формирование POST запросов к API Битрикс 24 по протоколу HTTPS; - троттлинг запросов к API на требуемом уровне - [не более 2-х запросов в секунду](https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php); - вывод отладочной информации о запросах к API в STDOUT. -При возникновении ошибок выбрасывается исключение с объектом класса `\App\AppException`. +При возникновении ошибок выбрасывается исключение класса `\App\HTTP\HTTPException`. #### Дополнительные параметры -Дополнительные параметры устанавливаются через публичные свойства объекта класса `\App\HTTP`: +Дополнительные параметры устанавливаются через публичные свойства объекта класса `\App\HTTP\HTTP`: Свойство | По умолчанию | Описание ----------------------- | ----------------------- | -------- -`$debugLevel` | `\App\HTTP::DEBUG_NONE` | Устанавливает уровень вывода отладочной информации о запросах в STDOUT (битовая маска, составляемая из значений DEBUG_URL, DEBUG_HEADERS, DEBUG_CONTENT) -`$throttle` | 2 | Максимальное число HTTP запросов в секунду +`$debugLevel` | `\App\HTTP\HTTP::DEBUG_NONE` | Устанавливает уровень вывода отладочной информации о запросах в STDOUT (битовая маска, составляемая из значений DEBUG_NONE, DEBUG_URL, DEBUG_HEADERS, DEBUG_CONTENT) +`$throttle` | 0 | Максимальное число HTTP запросов в секунду (0 - троттлинг отключен) `$addBOM` | false | Добавлять [маркер ВОМ](https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2) UTF-8 (EFBBBF) к запросам в формате JSON `$useCookies` | false | Использовать cookies в запросах `$cookieFile` | 'temp/cookies.txt' | Путь к файлу для хранения cookies -`$verifySSLCerfificate` | true | Включить проверку SSL/TLS-сертификата сервера -`$SSLCertificateFile` | 'cacert.pem' | Устанавливает файл SSL/TLS-сертификатов X.509 корневых удостоверяющих центров (CA) в формате РЕМ (null - использовать файл, указанный в параметре curl.cainfo файла php.ini) -`$userAgent` | 'HTTP-client/2.x.x' | Устанавливает НТТР заголовок UserAgent в запросах +`$verifySSLCertificate` | true | Включить проверку SSL/TLS-сертификата сервера +`$SSLCertificateFile` | 'cacert.pem' | Устанавливает файл SSL/TLS-сертификатов X.509 корневых удостоверяющих центров (CA) в формате РЕМ (установка в null означает использовать файл, указанный в параметре [curl.cainfo](https://www.php.net/manual/ru/curl.configuration.php) файла php.ini) +`$userAgent` | 'HTTP-client/3.x.x' | Устанавливает НТТР заголовок UserAgent в запросах `$curlConnectTimeout` | 60 | Устанавливает таймаут соединения, секунды `$curlTimeout` | 60 | Устанавливает таймаут обмена данными, секунды -`$successStatusCodes` | [ 200 ] | Коды статуса НТТР, которые считаются успешными +`$successStatusCodes` | [ 200 ] | Коды статуса НТТР, соответствующие успешному выполнению запроса + #### Примеры @@ -939,8 +933,7 @@ try { ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; -use App\HTTP; +use App\HTTP\HTTP; try { $webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/'; @@ -960,7 +953,7 @@ try { } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -975,7 +968,6 @@ Accept: */* Content-Length: 5 Content-Type: application/x-www-form-urlencoded - id=20 [1] <=== RESPONSE 0.5348s (200) @@ -1010,31 +1002,38 @@ X-Bitrix-LB: lb-ru-04 {"result":{"ID":"20","COMPANY_TYPE":"CUSTOMER","LOGO":null,"LEAD_ID":null,"HAS_PHONE":"N","HAS_EMAIL":"Y"}} ``` - -### Класс `\App\DebugLogger` + +### Класс `DebugLogger` -Класс [`\App\DebugLogger`](https://github.com/andrey-tech/debug-logger-php) обеспечивает логирование запросов и ответов к API Битрикс24 в файл. -При возникновении ошибок выбрасывается исключение с объектом класса `\App\AppException`. +Класс [`\App\DebugLogger\DebugLogger`](https://github.com/andrey-tech/debug-logger-php) обеспечивает логирование запросов и ответов к API Битрикс24 в файл. +При возникновении ошибок выбрасывается исключение класса `\App\DebugLogger\DebugLoggerException`. #### Методы класса -- `static instance(string $logFileName = 'debug.log') :\App\DebugLogger` - Возвращает единственный объект класса для заданного лог-файла `$logFileName`. +- `static instance(string $logFileName = 'debug.log') :self` + Возвращает единственный объект данного класса **для заданного лог-файла** `$logFileName`. + `$logFileName` - имя лог-файла. -- `save(mixed $info, $object = null) :void` Сохраняет подлежащую логированию информацию в файл. - + $info - строка, массив или объект для логирования; - + $object - ссылка на объект класса в котором выполняется логирование. +- `save(mixed $info, object $object = null, string $header = null) :void` Сохраняет подлежащую логированию информацию в файл. + + `$info` - строка, массив или объект для логирования; + + `$object` - ссылка на объект класса в котором выполняется логирование; + + `$header` - строка заголовка для сохраняемой в лог файл информации. #### Дополнительные параметры -Дополнительные параметры устанавливаются через публичные свойства объекта класса `\App\DebugLogger`: +Дополнительные параметры устанавливаются через публичные свойства класса `\App\DebugLogger\DebugLogger`: + +Нестатическое свойство | По умолчанию | Описание +----------------------- | ------------- | -------- +`$isActive` | false | Включает или выключает логирование для конкретного файла, задаваемого параметром `$logFileName` метода `instance()` -Свойство | По умолчанию | Описание +Статическое свойство | По умолчанию | Описание ----------------------- | ------------- | -------- -`$isActive` | false | Включает или выключает логирование `$logFileDir` | `temp/` | Устанавливает каталог, в котором сохраняются лог-файлы +`mkdirMode` | 0755 | Устанавливает режим доступа для создаваемых каталогов для хранения лог файлов в виде восьмеричного числа +`$uniqIdLength` | 7 | Длина уникального буквенно-цифрового [a-z0-9]+ идентификатора объекта класса `DebugLogger` для сохранения в лог файле, позволяющего находить записи, созданные одним и тем же процессом + #### Примеры @@ -1042,28 +1041,31 @@ X-Bitrix-LB: lb-ru-04 ```php use App\Bitrix24\Bitrix24API; use App\Bitrix24\Bitrix24APIException; -use App\AppException; -use App\DebugLogger; +use App\DebugLogger\DebugLogger; try { $webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/'; $bx24 = new Bitrix24API($webhookURL); - $logFileName = 'debug_bitrix24api.log'; - $bx24->logger = DebugLogger::instance($logFileName); - // Устанавливаем каталог для сохранения лог файлов - $bx24->logger->logFileDir = 'logs/'; + DebugLogger::$logFileDir = 'logs/'; + + // Создаем объект класса логгера + $logFileName = 'debug_bitrix24api.log'; + $logger = DebugLogger::instance($logFileName); // Включаем логирование - $bx24->logger->isActive = true; + $logger->isActive = true; + + // Устанавливаем логгер + $bx24->setLogger($logger); // Загружаем все компании $bx24->fetchCompanyList(); } catch (Bitrix24APIException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); -} catch (AppException $e) { +} catch (Exception $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); } ``` @@ -1071,7 +1073,7 @@ try { Пример результатов логирования: ``` -*** 92qshr5 [2020-06-14 13:32:44,993285 +00:00 Δ0.012308 s, 0.70/2.00 MiB] ******************** +*** 92qshr5 [2020-06-14 13:32:44.993285 +00:00 Δ0.012308 s, 0.70/2.00 MiB] ******************** * Class: App\Bitrix24\Bitrix24API ЗАПРОС: crm.company.list.json { @@ -1086,7 +1088,7 @@ try { } -*** 92qshr5 [2020-06-14 13:32:46,900518 +00:00 Δ1.907233 s, 1.14/2.00 MiB] ******************** +*** 92qshr5 [2020-06-14 13:32:46.900518 +00:00 Δ1.907233 s, 1.14/2.00 MiB] ******************** ОТВЕТ: crm.company.list.json { "result": [ @@ -1103,12 +1105,26 @@ try { } } -*** 92qshr5 [2020-06-14 13:32:46,902085 +00:00 Δ0.001567 s, 1.30/2.00 MiB] ******************** +*** 92qshr5 [2020-06-14 13:32:46.902085 +00:00 Δ0.001567 s, 1.30/2.00 MiB] ******************** * Class: App\Bitrix24\Bitrix24API По запросу (fetchList) crm.company.list получено сущностей: 50, всего получено: 50 ``` + +##### Формат заголовков лога + +``` +*** 92qshr5 [2020-06-14 13:32:46.902085 +00:00 Δ0.001567 s, 1.30/2.00 MiB] ******************** +* Class: App\Bitrix24\Bitrix24API +``` +- `92qshr5` - уникальный буквенно-цифровой [a-z0-9]+ идентификатор объекта класса `DebugLogger`, позволяющий находить в лог файле записи, созданные одним и тем же процессом; +- `2020-06-14 13:32:46.902085` - дата и время сохранения информации с точностью до микросекунд; +- `Δ0.001567 s` - время, прошедшее с момента предыдущего сохранения информации в секундах и микросекундах; +- `1.30/2.00 MiB` - данные об используемой оперативной памяти в единицах количества информации с [двоичными приставками](https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8): + + `1.30` - максимальный объем памяти, который был выделен PHP-скрипту системой; + + `2.00` - реальный объем памяти, выделенный PHP-скрипту системой; +- 'Class: App\Bitrix24\Bitrix24API' - полное имя класса из которого сделано сохранение в лог файл. ## Автор diff --git a/composer.json b/composer.json index 8f3a924..beefcc5 100644 --- a/composer.json +++ b/composer.json @@ -15,8 +15,8 @@ "require": { "php": ">=7.0", "ext-json": "*", - "andrey-tech/http-client-php": "^2.8", - "andrey-tech/debug-logger-php": "^1.8" + "andrey-tech/http-client-php": "^3.0", + "andrey-tech/debug-logger-php": "^2.0" }, "autoload": { "psr-4": { diff --git a/src/App/Bitrix24/Bitrix24API.php b/src/App/Bitrix24/Bitrix24API.php index 0f27d1f..bdda825 100644 --- a/src/App/Bitrix24/Bitrix24API.php +++ b/src/App/Bitrix24/Bitrix24API.php @@ -23,13 +23,15 @@ * v1.3.1 (15.06.2020) Исправлено логирование ответа * v1.3.2 (23.01.2021) Исправлены сообщения об ошибках * v1.4.0 (03.02.2021) Добавлены свойства класса, задающие имена полей связанных сущностей + * v1.5.0 (06.02.2021) Изменения для классов: HTTP 3.0 и DebugLogger 2.0; добавлен метод setLogger() + * */ declare(strict_types=1); namespace App\Bitrix24; -use App\HTTP; +use App\HTTP\HTTP; use Generator; class Bitrix24API @@ -66,7 +68,7 @@ class Bitrix24API /** * Объект класса, выполняющего логирование * - * @param object + * @param \App\DebugLogger\DebugLoggerInterface */ public $logger; @@ -78,9 +80,8 @@ class Bitrix24API public $batchSize = 50; /** - * Объект класса \App\HTTP - * - * @param object + * Объект класса \App\HTTP\HTTP + * @param HTTP */ public $http; @@ -105,7 +106,7 @@ class Bitrix24API */ public function __construct(string $webhookUrl) { - // Нормализация для слеша в конце URL + // Нормализация для / в конце URL $this->webhookUrl = rtrim($webhookUrl, '/'); $this->http = new HTTP(); @@ -114,6 +115,20 @@ public function __construct(string $webhookUrl) $this->http->useCookies = false; } + /** + * Устанавливает объект класса, выполняющего логирование + * @param \App\DebugLogger\DebugLoggerInterface $logger + */ + public function setLogger($logger) + { + if (!($logger instanceof \App\DebugLogger\DebugLoggerInterface)) { + throw new Bitrix24APIException( + "Объект класса логгера должен реализовывать интерфейс \App\DebugLogger\DebugLoggerInterface" + ); + } + $this->logger = $logger; + } + /** * Возвращает последний ответ от API Битрикс24 *