рдкрд░рд┐рдЪрдп
рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ? - рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдЬрдм рдореБрдЭреЗ рдХреБрдЫ рд╕реЗрд╡рд╛ рдХреЗ рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрд░реА рдЖрд░рд╛рдорджрд╛рдпрдХ рдЖрдИрдбреАрдИ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реА рдЗрдХрд╛рдИ рдореЗрдВ рдХреНрдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдХреБрдЫ рд╕реЗрд╡рд╛рдУрдВ, рдЕрдЧрд░ рд╡реЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдПрд╕рдбреАрдХреЗ / рд░реИрдкрд░ рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдЙрдирдХреЗ рдкрд╛рд╕ рд╣реИ, рддреЛ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрдиреНрд╡рд░реНрдЯрд░ (рдбреЗрдЯрд╛ рдореИрдкрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реИрдкрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ рдирд╢реНрд╡рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореИрдВрдиреЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЖрдкрдХреА рдореЛрдЯрд░рд╕рд╛рдЗрдХрд┐рд▓PHP рдореЗрдВ Bitrix24 рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЗ рдЖрд╡рд░рдг, рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХрд╛рд░реА - рдЙрдкрд░реЛрдХреНрдд рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ:
- рдЬреАрдЖрд░рдПрдПрд╕рдкреА рдФрд░ рдПрд╕рдУрдПрд▓рдЖрдИрдбреА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╕рдордп рдореИрдВ рдЕрдкрдиреЗ рд╕реЛрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛
- рдореИрдВ рдЦреБрдж рдХреЛ рдкреИрд░ рдореЗрдВ рдЧреЛрд▓реА рдорд╛рд░реВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░ рдореИрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реА рдХрд░реВрдВрдЧрд╛
- рдореИрдВ рдкрд╣рд▓реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░реВрдВрдЧрд╛
рд╕рд╣реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдвреВрдБрдврдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рдФрд░ рддреБрд░рдВрдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд╕реНрдХреЗрдЪ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╛рдлреА рд╡рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рдереЗред рддреЛ, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдХреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд░реЗрдВ, рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░реНрд╡-рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдирд╛ред рдпрджрд┐ рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдВрдд рдореЗрдВ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХрдИ рдореЗрдВ, рднрд▓реЗ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдХреЗрд▓реЗ рдХреА рдЧрдИ рд╣реЛред

, - - , . 24.
, API ┬л ┬╗, - , OAuth2.0.
┬л ┬╗, , , .
, . , .
, . , , , , , :
$leads = BX24Wrapper\Engine\WebHook::instane('https://b24-xxxxxx.bitrix24.ru/rest/1/********/')
->resources()
->leads()
->list(['STATUS' => 'NEW']);
$applicationEngine = BX24Wrapper\Engine\Application::instane('client_id', 'client_secret', 'access_token',...);
$leads = $applicationEngine
->resources()
->leads()
->list(['STATUS' => 'NEW']);
$responseFromSomeCall = $applicationEngine->get('crm.some.list', ['SOME' => 'VALUE']);
, 2 (WebHook Application), ┬л ┬╗, . resources() , , (leads, deals, tasksтАж), тАФ (list, add, updateтАж). , тАж ? , , тАж .
, , UML- :

Engine\AbstractBasic тАФ API.
Resources тАУ , .
Resource\AbstractBasic тАФ , API-, API-, .
Entity\AbstractBasic тАФ -, API-.
, , Engine\AbstractBasic Resources , , . , , GRASP- ┬л ┬╗, .
_engine Resources тАУ Resource\AbstractBasic . , , ┬л ┬╗.
, - orders(), contacts() .. , Resources , ┬л ┬╗ SOLID- ┬л/┬╗. , , .
, , , . !
, Engine Resources? Resources, , , , .
, ? IDE , тАФ . , .
, :
$leads = Resource\Lead::instane(new Engine\WebHook('https://b24-xxxxxx.bitrix24.ru/rest/1/********/'))
->list(['STATUS' => 'NEW']);
$applicationEngine = BX24Wrapper\Engine\Application::instane('client_id', 'client_secret', 'access_token',...);
$leads = Resource\Lead::instane($applicationEngine)
->list(['STATUS' => 'NEW']);
$responseFromSomeCall = $applicationEngine->get('crm.some.list', ['SOME' => 'VALUE']);
, , , . , :

, , , , . , : тЖТ . , , API- , , , . .

, . : ┬л ?┬╗ тАУ - , ┬л┬╗, , , , , , .
, Resource\AbstractBasic, , . тАФ API- , тАУ API- .
тАУ ┬л┬╗, Resource\AbstractBasic тАж

, . API-, , . . , , , тАж
! ( , ), ? ? , ?! .
Resource, тАФ , !
$resource = Resource\Batch::instane(new Engine\WebHook('https://wtfkjg.ru/fdsgfds'));
$resource->sendBatchCalls([
'lead_ids' => Resource\FindByComm::find(['type' => 'EMAIL', 'values' => ['79780001122'], 'entity_type' => 'LEAD']),
'contacts' => Resource\Contact::list(['ID' => "\$result['lead_ids'][LEAD]"]),
]);
, - API-, . , Request. , .

, , Request. , тАж
, , ? ? , Resources, ? ┬л┬╗ ┬л/┬╗ - list, get ..
, , , Request- , . :
$engine = new Engine\WebHook('https://b24-xxxxxx.bitrix24.ru/rest/1/********/');
$leads = $engine->execute(Request\Lead\Items::all(['STATUS' => 'NEW'], ['ID' => 'DESC']));
$responseFromSomeGetCall = $engine->execute(Request\Custom::get('some.api.method', ['SOME' => 'PARAMS']));
$responseFromSomePostCall = $engine->execute(Request\Custom::post('some.api.method', ['SOME' => 'PARAMS']));
$response = $engine->execute([
'lead_ids' => Request\FindByComm\Find::byPhone('79780001122', 'LEAD'),
'contacts' => Request\Contact\Items::firstPage(['ID' => "\$result['lead_ids'][LEAD]"], ['ID' => 'ASC']),
]);

, (), execute , , http- . , API- . , -, .
, , , , - .
, :
-, , execute, mixed. , IDE , . , .. , .
-, API- , 1 = 1 . - . , , , .
, API . , 24. !
GRASP SOLID, , .
GRASP:
- : .
- : Builder, .
- : .
- : .
- : , , , .
- : , . .
- : Builder.
- : Builder, .
SOLID:
- : , .
- /: API-, , , .
- : , , , .
- : , .
- : , , , 0, .
, , . ? , , 100%, 90%, , . , , тАФ . , тАж
-, GRASP SOLID - , . . - ┬л┬╗, .
, .
: https://github.com/Dangetsu/bitrix24-api-wrapper
, , .
PHP 7.1, , .
:
slyshkin
: