GRASP рдкреИрдЯрд░реНрди рдФрд░ SOLID рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдХрд╕реНрдЯрдо рд░реИрдкрд░ рдПрдкреАрдЖрдИ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдмрдирд╛рдирд╛

рдкрд░рд┐рдЪрдп


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


рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореИрдВрдиреЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЖрдкрдХреА рдореЛрдЯрд░рд╕рд╛рдЗрдХрд┐рд▓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


:



All Articles