1010<!-- MarkdownTOC levels="1,2,3,4,5,6" autoanchor="true" autolink="true" -->
1111
1212- [ Требования] ( #%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F )
13+ - [ Установка] ( #%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0 )
1314- [ Класс ` Bitrix24API ` ] ( #%D0%9A%D0%BB%D0%B0%D1%81%D1%81-bitrix24api )
1415 - [ Базовые методы класса] ( #%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 )
1516 - [ Дополнительные параметры] ( #%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 )
2627 - [ Методы для работы с диском] ( #%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 )
2728- [ Вспомогательные классы] ( #%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 )
2829 - [ Класс ` \App\HTTP ` ] ( #%D0%9A%D0%BB%D0%B0%D1%81%D1%81-apphttp )
30+ - [ Дополнительные параметры] ( #%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 )
31+ - [ Примеры] ( #%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B )
2932 - [ Класс ` \App\DebugLogger ` ] ( #%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger )
33+ - [ Методы класса] ( #%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0 )
34+ - [ Дополнительные параметры] ( #%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 )
35+ - [ Примеры] ( #%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B-1 )
3036- [ Автор] ( #%D0%90%D0%B2%D1%82%D0%BE%D1%80 )
3137- [ Лицензия] ( #%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F )
3238
3642## Требования
3743
3844- PHP >= 7.0.
45+ - класс [ ` \App\HTTP ` ] ( https://github.com/andrey-tech/http-client-php ) - НТТР(S) клиент с троттлингом запросов;
46+ - класс [ ` \App\DebugLogger ` ] ( https://github.com/andrey-tech/debug-logger-php ) - логгер, cохраняющий отладочную информацию в файл;
3947- Произвольный автозагрузчик классов, реализующий стандарт [ PSR-4] ( https://www.php-fig.org/psr/psr-4/ ) .
4048
49+
50+ <a id =" %D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0 " ></a >
51+ ## Установка
52+
53+ Установка через composer:
54+ ```
55+ $ composer require andrey-tech/bitrix24-api-php:"^1.4"
56+ ```
57+
58+ или добавить
59+
60+ ```
61+ "andrey-tech/bitrix24-api-php": "^1.4"
62+ ```
63+
64+ в секцию require файла composer.json.
65+
4166<a id =" %D0%9A%D0%BB%D0%B0%D1%81%D1%81-bitrix24api " ></a >
4267## Класс ` Bitrix24API `
4368
82107<a id =" %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 " ></a >
83108### Дополнительные параметры
84109
85- Дополнительные параметры доступны через публичные свойства класса ` Bitrix24API ` .
110+ Дополнительные параметры доступны через публичные свойства объекта класса ` \App\Bitrix24\ Bitrix24API` :
86111
87112Свойство | По умолчанию | Описание
88113----------------------- | ------------------ | --------
@@ -417,6 +442,7 @@ try {
417442- ` fetchCatalogList(array $filter = [], array $select = [], array $order = []) :\Generator `
418443 Загружает все каталоги с возможностью фильтрации, сортировки и выборки полей.
419444 Реализует [ быстрый метод] ( https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php ) загрузки при работе с большими объемами данных.
445+ - ` getCatalogFields() :array ` Возвращает описание полей каталога товаров.
420446
421447Параметры методов:
422448
@@ -826,14 +852,18 @@ try {
826852<a id =" %D0%9A%D0%BB%D0%B0%D1%81%D1%81-apphttp " ></a >
827853### Класс ` \App\HTTP `
828854
829- Класс ` \App\HTTP ` обеспечивает:
855+ Класс [ ` \App\HTTP ` ] ( https://github.com/andrey-tech/http-client-php ) обеспечивает:
830856
831857- формирование POST запросов к API Битрикс 24 по протоколу HTTPS;
832858- троттлинг запросов к API на требуемом уровне - [ не более 2-х запросов в секунду] ( https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php ) ;
833859- вывод отладочной информации о запросах к API в STDOUT.
834860
835- При возникновении ошибок выбрасывается исключение с объектом класса ` \App\AppException ` .
836- Дополнительные параметры доступны через публичные свойства класса ` \App\HTTP ` .
861+ При возникновении ошибок выбрасывается исключение с объектом класса ` \App\AppException ` .
862+
863+ <a id =" %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 " ></a >
864+ #### Дополнительные параметры
865+
866+ Дополнительные параметры устанавливаются через публичные свойства объекта класса ` \App\HTTP ` :
837867
838868Свойство | По умолчанию | Описание
839869----------------------- | ----------------------- | --------
@@ -845,12 +875,15 @@ try {
845875` $verifySSLCerfificate ` | true | Включить проверку SSL/TLS-сертификата сервера
846876` $SSLCertificateFile ` | 'cacert.pem' | Устанавливает файл SSL/TLS-сертификатов X.509 корневых удостоверяющих центров (CA) в формате РЕМ (null - использовать файл, указанный в параметре curl.cainfo файла php.ini)
847877` $userAgent ` | 'HTTP-client/2.x.x' | Устанавливает НТТР заголовок UserAgent в запросах
848- ` $curlTimeout ` | 60 | Устанавливает таймаут установения соединения, секунды
878+ ` $curlConnectTimeout ` | 60 | Устанавливает таймаут соединения, секунды
879+ ` $curlTimeout ` | 60 | Устанавливает таймаут обмена данными, секунды
849880` $successStatusCodes ` | [ 200 ] | Коды статуса НТТР, которые считаются успешными
850881
882+ <a id =" %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B " ></a >
883+ #### Примеры
884+
851885``` php
852886use \App\Bitrix24\Bitrix24API;
853- use \App\HTTP;
854887
855888$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
856889$bx24 = new Bitrix24API($webhookURL);
@@ -861,32 +894,79 @@ $bx24->http->debugLevel = HTTP::DEBUG_URL | HTTP::DEBUG_HEADERS | HTTP::DEBUG_C
861894// Устанавливаем троттлинг запросов на уровне не более 1 запроса в 2 секунды
862895$bx24->http->throttle = 0.5;
863896
864- // Устанавливаем таймаут соединения в 30 секунд
897+ // Устанавливаем таймаут обмена данными в 30 секунд
865898$bx24->http->curlTimeout = 30;
866899```
867900
901+ Примеры отладочных сообщений:
902+ ```
903+ [1] ===> POST https://www.example.com
904+ POST / HTTP/1.1
905+ Host: www.example.com
906+ User-Agent: HTTP-client/2.x.x
907+ Accept: */*
908+ Content-Type: application/json
909+ Content-Length: 55
910+
911+
912+ {"username":"ivan@example.com","password":"1234567890"}
913+
914+ [1] <=== RESPONSE 0.9269s (200)
915+ HTTP/1.1 200 OK
916+ Accept-Ranges: bytes
917+ Cache-Control: max-age=604800
918+ Content-Type: text/html; charset=UTF-8
919+ Date: Sun, 14 Jun 2020 13:09:33 GMT
920+ Etag: "3147526947"
921+ Expires: Sun, 21 Jun 2020 13:09:33 GMT
922+ Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
923+ Server: EOS (vny/0453)
924+ Content-Length: 1256
925+
926+ <!doctype html>
927+ <html>
928+ <head>
929+ <title>Example Domain</title>
930+ </head>
931+ <body>
932+ <div>
933+ <h1>Example Domain</h1>
934+ <p>This domain is for use in illustrative examples in documents. You may use this
935+ domain in literature without prior coordination or asking for permission.</p>
936+ <p><a href="https://www.iana.org/domains/example">More information...</a></p>
937+ </div>
938+ </body>
939+ </html>
940+ ```
941+
868942<a id =" %D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger " ></a >
869943### Класс ` \App\DebugLogger `
870944
871- Класс ` \App\DebugLogger ` обеспечивает логирование запросов и ответов к API в файл.
945+ Класс [ ` \App\DebugLogger ` ] ( https://github.com/andrey-tech/debug-logger-php ) обеспечивает логирование запросов и ответов к API Битрикс24 в файл.
872946При возникновении ошибок выбрасывается исключение с объектом класса ` \App\AppException ` .
873947
874- Список методов класса:
948+ <a id =" %D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0 " ></a >
949+ #### Методы класса
875950
876- - ` static instance(string $logFileName = 'debug.log') :\App\DebugLogger ` Возвращает объект класса.
877- + ` $logFileName ` - имя лог файла.
951+ - ` static instance(string $logFileName = 'debug.log') :\App\DebugLogger `
952+ Возвращает единственнный объект класса для заданного лог-файла ` $logFileName ` .
953+ + ` $logFileName ` - имя лог-файла.
878954- ` save(mixed $info, $object = null) :void ` Сохраняет подлежащую логированию информацию в файл.
879955 + $info - строка, массив или объект для логирования;
880956 + $object - ссылка на объект класса в котором выполняется логирование.
881957
882- Дополнительные параметры логирования доступы через публичные свойства класса ` \App\DebugLogger ` .
958+ <a id =" %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 " ></a >
959+ #### Дополнительные параметры
960+
961+ Дополнительные параметры устанавливаются через публичные свойства объекта класса ` \App\DebugLogger ` :
883962
884963Свойство | По умолчанию | Описание
885964----------------------- | ------------- | --------
886965` $isActive ` | false | Включает или выключает логирование
887- ` $logFileDir ` | ` temp/ ` | Устанавливает каталог в котором сохраняются лог файлы
888-
966+ ` $logFileDir ` | ` temp/ ` | Устанавливает каталог, в котором сохраняются лог-файлы
889967
968+ <a id =" %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B-1 " ></a >
969+ #### Примеры
890970
891971``` php
892972use \App\Bitrix24\Bitrix24API;
@@ -906,6 +986,48 @@ $bx24->logger->isActive = true;
906986
907987```
908988
989+ Пример результатов логирования:
990+
991+ ```
992+ *** 92qshr5 [2020-06-14 13:32:44,993285 +00:00 Δ0.012308 s, 0.70/2.00 MiB] ********************
993+ * Class: App\Bitrix24\Bitrix24API
994+ ЗАПРОС: crm.company.list.json
995+ {
996+ "order": {
997+ "ID": "ASC"
998+ },
999+ "filter": {
1000+ ">ID": 0
1001+ },
1002+ "select": [],
1003+ "start": -1
1004+ }
1005+
1006+
1007+ *** 92qshr5 [2020-06-14 13:32:46,900518 +00:00 Δ1.907233 s, 1.14/2.00 MiB] ********************
1008+ ОТВЕТ: crm.company.list.json
1009+ {
1010+ "result": [
1011+ {
1012+ "ID": "2",
1013+ "COMPANY_TYPE": "PARTNER",
1014+ "TITLE": "ООО",
1015+ "LOGO": {
1016+ "id": 112,
1017+ "showUrl": "\/bitrix\/components\/bitrix\/crm.company.show\/show_file.php?ownerId=2&fieldName=LOGO&dynamic=N&fileId=112",
1018+ "downloadUrl": "\/bitrix\/components\/bitrix\/crm.company.show\/show_file.php?auth=&ownerId=2&fieldName=LOGO&dynamic=N&fileId=112"
1019+ }
1020+ }
1021+ }
1022+ }
1023+
1024+ *** 92qshr5 [2020-06-14 13:32:46,902085 +00:00 Δ0.001567 s, 1.30/2.00 MiB] ********************
1025+ * Class: App\Bitrix24\Bitrix24API
1026+ По запросу (fetchList) crm.company.list получено сущностей: 50, всего получено: 50
1027+ ```
1028+
1029+
1030+
9091031<a id =" %D0%90%D0%B2%D1%82%D0%BE%D1%80 " ></a >
9101032## Автор
9111033
0 commit comments