10
10
<!-- MarkdownTOC levels="1,2,3,4,5,6" autoanchor="true" autolink="true" -->
11
11
12
12
- [ Требования] ( #%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 )
13
14
- [ Класс ` Bitrix24API ` ] ( #%D0%9A%D0%BB%D0%B0%D1%81%D1%81-bitrix24api )
14
15
- [ Базовые методы класса] ( #%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 )
15
16
- [ Дополнительные параметры] ( #%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 )
26
27
- [ Методы для работы с диском] ( #%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 )
27
28
- [ Вспомогательные классы] ( #%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 )
28
29
- [ Класс ` \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 )
29
32
- [ Класс ` \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 )
30
36
- [ Автор] ( #%D0%90%D0%B2%D1%82%D0%BE%D1%80 )
31
37
- [ Лицензия] ( #%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F )
32
38
36
42
## Требования
37
43
38
44
- 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охраняющий отладочную информацию в файл;
39
47
- Произвольный автозагрузчик классов, реализующий стандарт [ PSR-4] ( https://www.php-fig.org/psr/psr-4/ ) .
40
48
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
+
41
66
<a id =" %D0%9A%D0%BB%D0%B0%D1%81%D1%81-bitrix24api " ></a >
42
67
## Класс ` Bitrix24API `
43
68
82
107
<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 >
83
108
### Дополнительные параметры
84
109
85
- Дополнительные параметры доступны через публичные свойства класса ` Bitrix24API ` .
110
+ Дополнительные параметры доступны через публичные свойства объекта класса ` \App\Bitrix24\ Bitrix24API` :
86
111
87
112
Свойство | По умолчанию | Описание
88
113
----------------------- | ------------------ | --------
@@ -417,6 +442,7 @@ try {
417
442
- ` fetchCatalogList(array $filter = [], array $select = [], array $order = []) :\Generator `
418
443
Загружает все каталоги с возможностью фильтрации, сортировки и выборки полей.
419
444
Реализует [ быстрый метод] ( https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php ) загрузки при работе с большими объемами данных.
445
+ - ` getCatalogFields() :array ` Возвращает описание полей каталога товаров.
420
446
421
447
Параметры методов:
422
448
@@ -826,14 +852,18 @@ try {
826
852
<a id =" %D0%9A%D0%BB%D0%B0%D1%81%D1%81-apphttp " ></a >
827
853
### Класс ` \App\HTTP `
828
854
829
- Класс ` \App\HTTP ` обеспечивает:
855
+ Класс [ ` \App\HTTP ` ] ( https://github.com/andrey-tech/http-client-php ) обеспечивает:
830
856
831
857
- формирование POST запросов к API Битрикс 24 по протоколу HTTPS;
832
858
- троттлинг запросов к API на требуемом уровне - [ не более 2-х запросов в секунду] ( https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php ) ;
833
859
- вывод отладочной информации о запросах к API в STDOUT.
834
860
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 ` :
837
867
838
868
Свойство | По умолчанию | Описание
839
869
----------------------- | ----------------------- | --------
@@ -845,12 +875,15 @@ try {
845
875
` $verifySSLCerfificate ` | true | Включить проверку SSL/TLS-сертификата сервера
846
876
` $SSLCertificateFile ` | 'cacert.pem' | Устанавливает файл SSL/TLS-сертификатов X.509 корневых удостоверяющих центров (CA) в формате РЕМ (null - использовать файл, указанный в параметре curl.cainfo файла php.ini)
847
877
` $userAgent ` | 'HTTP-client/2.x.x' | Устанавливает НТТР заголовок UserAgent в запросах
848
- ` $curlTimeout ` | 60 | Устанавливает таймаут установения соединения, секунды
878
+ ` $curlConnectTimeout ` | 60 | Устанавливает таймаут соединения, секунды
879
+ ` $curlTimeout ` | 60 | Устанавливает таймаут обмена данными, секунды
849
880
` $successStatusCodes ` | [ 200 ] | Коды статуса НТТР, которые считаются успешными
850
881
882
+ <a id =" %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B " ></a >
883
+ #### Примеры
884
+
851
885
``` php
852
886
use \App\Bitrix24\Bitrix24API;
853
- use \App\HTTP;
854
887
855
888
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
856
889
$bx24 = new Bitrix24API($webhookURL);
@@ -861,32 +894,79 @@ $bx24->http->debugLevel = HTTP::DEBUG_URL | HTTP::DEBUG_HEADERS | HTTP::DEBUG_C
861
894
// Устанавливаем троттлинг запросов на уровне не более 1 запроса в 2 секунды
862
895
$bx24->http->throttle = 0.5;
863
896
864
- // Устанавливаем таймаут соединения в 30 секунд
897
+ // Устанавливаем таймаут обмена данными в 30 секунд
865
898
$bx24->http->curlTimeout = 30;
866
899
```
867
900
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":"[email protected] ","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
+
868
942
<a id =" %D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger " ></a >
869
943
### Класс ` \App\DebugLogger `
870
944
871
- Класс ` \App\DebugLogger ` обеспечивает логирование запросов и ответов к API в файл.
945
+ Класс [ ` \App\DebugLogger ` ] ( https://github.com/andrey-tech/debug-logger-php ) обеспечивает логирование запросов и ответов к API Битрикс24 в файл.
872
946
При возникновении ошибок выбрасывается исключение с объектом класса ` \App\AppException ` .
873
947
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
+ #### Методы класса
875
950
876
- - ` static instance(string $logFileName = 'debug.log') :\App\DebugLogger ` Возвращает объект класса.
877
- + ` $logFileName ` - имя лог файла.
951
+ - ` static instance(string $logFileName = 'debug.log') :\App\DebugLogger `
952
+ Возвращает единственнный объект класса для заданного лог-файла ` $logFileName ` .
953
+ + ` $logFileName ` - имя лог-файла.
878
954
- ` save(mixed $info, $object = null) :void ` Сохраняет подлежащую логированию информацию в файл.
879
955
+ $info - строка, массив или объект для логирования;
880
956
+ $object - ссылка на объект класса в котором выполняется логирование.
881
957
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 ` :
883
962
884
963
Свойство | По умолчанию | Описание
885
964
----------------------- | ------------- | --------
886
965
` $isActive ` | false | Включает или выключает логирование
887
- ` $logFileDir ` | ` temp/ ` | Устанавливает каталог в котором сохраняются лог файлы
888
-
966
+ ` $logFileDir ` | ` temp/ ` | Устанавливает каталог, в котором сохраняются лог-файлы
889
967
968
+ <a id =" %D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B-1 " ></a >
969
+ #### Примеры
890
970
891
971
``` php
892
972
use \App\Bitrix24\Bitrix24API;
@@ -906,6 +986,48 @@ $bx24->logger->isActive = true;
906
986
907
987
```
908
988
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
+
909
1031
<a id =" %D0%90%D0%B2%D1%82%D0%BE%D1%80 " ></a >
910
1032
## Автор
911
1033
0 commit comments