Skip to content

Commit 1e076f3

Browse files
committed
Add new method getCatalogFields()
1 parent b233c31 commit 1e076f3

File tree

7 files changed

+151
-4216
lines changed

7 files changed

+151
-4216
lines changed

README.md

Lines changed: 136 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
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)
@@ -26,7 +27,12 @@
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

@@ -36,8 +42,27 @@
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

@@ -82,7 +107,7 @@
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
852886
use \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":"[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+
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
892972
use \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

composer.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "andrey-tech/bitrix24-api-php",
33
"description": "Обертка для работы с API Битрикс24 с использованием механизма входящих вебхуков, троттлингом запросов и логированием в файл",
4+
"keywords": [ "bitrix", "bitrix24", "api", "api-wrapper", "throttling", "logging" ],
45
"homepage": "https://github.com/andrey-tech/bitrix24-api-php",
56
"minimum-stability": "stable",
67
"license": "MIT",
@@ -12,11 +13,12 @@
1213
}
1314
],
1415
"require": {
15-
"php": ">=7.0"
16+
"php": ">=7.0",
17+
"andrey-tech/http-client-php": "^2.8",
18+
"andrey-tech/debug-logger-php": "^1.8"
1619
},
1720
"autoload": {
1821
"psr-4": {
19-
"App\\": "src/App",
2022
"App\\Bitrix24\\": "src/App/Bitrix24"
2123
}
2224
}

src/App/AppException.php

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/App/Bitrix24/Catalog.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88
* @see https://github.com/andrey-tech/bitrix24-api-php
99
* @license MIT
1010
*
11-
* @version 1.1.0
11+
* @version 1.2.0
1212
*
1313
* v1.0.0 (15.10.2019) Начальная версия
1414
* v1.1.0 (11.06.2020) Добавлен метод fetchCatalogList()
15+
* v1.2.0 (14.06.2020) Добавлен метод getCatalogFields()
1516
*
1617
*/
1718
declare(strict_types = 1);
@@ -20,6 +21,15 @@
2021

2122
trait Catalog
2223
{
24+
/**
25+
* Возвращает описание полей каталога товаров
26+
* @return array
27+
*/
28+
public function getCatalogFields()
29+
{
30+
return $this->request('crm.catalog.fields');
31+
}
32+
2333
/**
2434
* Возвращает все товарные каталоги
2535
* @param array $filter Параметры фильтрации

0 commit comments

Comments
 (0)