рдирдорд╕реНрдХрд╛рд░ рджреЛрд╕реНрддреЛрдВ! PHP рдореЗрдВ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрджреНрднрд╡ PHP рд╕рдореБрджрд╛рдп рдХреЗ рдЬреАрд╡рди рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд╕рдВрдЧреАрддрдХрд╛рд░ рдиреЗ рд╕рдордп рдХреЛ "рдкрд╣рд▓реЗ" рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ - рдЬрдм рд╣рдорд╛рд░реЗ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬрд╝рд┐рдк рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдореЗрдВ рдереЗ рдпрд╛ рдмрд╕ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП рдереЗ рдФрд░ "рдкреЗрди" рджреНрд╡рд╛рд░рд╛ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдереЗ, рдХреЗрд╡рд▓ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реА рдЧрд┐рдЯ рдпрд╛ рдкреАрдИрдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ "рдмрд╛рдж рдореЗрдВ" рдЬрдм рд╣рдордиреЗ рд╕рдВрдЧреАрддрдХрд╛рд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реАрдПрдордПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ "рдкрддрд╛ рдирд╣реАрдВ" рд╣реИ рдХрд┐ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдореИрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡реЗрдм-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рдЯреАрдо рд▓реАрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдЕрдкрдиреА рдЯреАрдо рдореЗрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, 70% рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрд┐рдирдореЗрдВ рд╕реЗ рдорд╛рдирдХ (рд╡реЗрдмрд╕рд╛рдЗрдЯ, рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░) рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо 1C-Bitrix рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реАрдПрдордПрд╕ рдХреА рддрд░рд╣ 1C-Bitrix рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдХреЙрдкреА рдХрд░рдХреЗ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдореЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП 1C-Bitrix рдорд╛рд░реНрдХреЗрдЯрдкреНрд▓реЗрд╕ рд╕рд╛рдЗрдЯ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдЭреЗрджрд╛рд░реА рд╕рдордЭреМрддреЗ рдХрд╛ рд╕рдорд╛рдкрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рд╕рдордЭреМрддреЗ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ред рдФрд░ рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреА рдХрд┐рд╕реА рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдПрдХ рдбрд┐рдЧреНрд░реА рдпрд╛ рджреВрд╕рд░реЗ рдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ "рдкрд╣рд▓реЗ" рд╡рд┐рдХрд╕рд┐рдд рд╕рднреА рд╕реАрдПрдордПрд╕ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдпрд╣ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдзреНрд╡рд╕реНрдд рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдЗрд╕ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛" рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП), рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдПрдХ рдЯреАрдо / рдХрдВрдкрдиреА рдореЗрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рдерд╛рдУрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рд╕реАрдПрдордПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЬреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реАрдПрдордПрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдХреЗрд╡рд▓ PHP рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!
рднрд╛рдЧ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд╛рди
рдкрд╣рд▓рд╛ рдХрд╛рдо рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд┐рд╕реА рднреА git, рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рдпрд╛ svn рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдореИрдВ GitHub рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЧрд┐рдЯрд╣рдм рдкрд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦрдиреЗ рдФрд░ рдорд╛рд░реНрдХрдбрд╛рдЙрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдмрдирд╛рдП рд░рдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрдЧрд╛ред рдХрдВрдкреЛрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдВрдкреЛрдЬрд╝рд░.рдЬреЙрд╕рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдирд╛рдирд╛ рдФрд░ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рдЖрдкрдХреЗ рдЖрдИрдбреАрдИ рдореЗрдВ, рдпрд╛ рд╕рдВрдЧреАрддрдХрд╛рд░ рдЗрдирд┐рдЯ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рд╕рдВрдЧреАрддрдХрд╛рд░ рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдпрджрд┐ рдЖрдк рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ, рддреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝реЗрдВред
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рд╣реИ) рдФрд░ GitHub рдкрд░ рдЗрд╕рдХреЗ рдХреЛрдб рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ packagist.org рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред Packagist рдЖрдкрдХреЛ GitHub рд╣реБрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рдЬрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЖрдП, рддреЛ packagist.org рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПред
рднрд╛рдЧ рджреЛ рд╕реНрдерд╛рдкрдирд╛ред рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ
рдЖрдк, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕реАрдПрдордПрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рднреА рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред 1C-Bitrix рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ 2 рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИ:
- рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛
<project_dir>/local/modules/<company_name>.<mod_mame>
- RegisterModule рдлрд╝рдВрдХреНрд╢рди (<company_name> <mod_mame>) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╡рд░реНрдЧ рдХреЗ DoInstall рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред
<project_dir>/local/modules/<company_name>.<mod_mame>/install/index.php
рднрд╛рдЧ рджреЛ рдПрдХ рд╣реИред рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЬрдЧрд╣ рдореЗрдВ рдкреИрдХреЗрдЬ рдЫреБрдкрд╛рдПрдБ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рдВрдЧреАрддрдХрд╛рд░ <project_dir>/vendor
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рднреА рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕рдВрдЧреАрддрдХрд╛рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╣реБрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рд╣рдореЗрдВ рдХрдВрдкреЛрдЬрд╝рд░.рдЬреЙрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛:
{ "name": "sites/<sitename>", "description": "<SiteName>", "authors": [ { "name": "<developerName>", "email": "<developerEmail>" } ], "minimum-stability": "dev", "require": {}, "config": { "vendor-dir": "local/vendor" } }
1C-Bitrix рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреЛрдб рдЖрдорддреМрд░ рдкрд░ <project_dir>/local
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджреНрд╡рд╛рд░рд╛ vendor
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╡рд╣рд╛рдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдЕрдм рд╕рднреА рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдкреИрдХреЗрдЬ рд╡рд╣рд╛рдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ <project_dir>/local/modules/<company_name>.<mod_mame>
рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рднрд╛рдЧ рджреЛ рджреЛред рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд▓рдЧрдЗрди
рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЬ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдХрдВрдкреЛрдЬрд╝рд░-рдкреНрд▓рдЧрдЗрди , рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╣реА рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИред рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ CMS рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдХреА рдЬрдбрд╝ рдореЗрдВ рдХрдВрдкреЛрдЬрд░ рд▓рдЧрд╛рдПрдВ ред
{ "name": "<my_name>/installer", "description": "Plugin for custom installing", "type": "composer-plugin", "license": "MIT", "homepage": "<link to homepage github>", "version": "0.0.1", "authors": [ { "name": "<name>", "email": "<email>" } ], "require": { "composer-plugin-api": "^1.0" }, "require-dev": { "composer/composer": "^1.0" }, "autoload": { "psr-4": { "<my_name>\\installer\\": "" } }, "extra": { "class": "<my_name>\\installer\\Plugin" } }
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ 3 рдореБрдЦреНрдп рдмрд┐рдВрджреБ рд╣реИрдВ:
- "рдЯрд╛рдЗрдк": "рд╕рдВрдЧреАрддрдХрд╛рд░-рдкреНрд▓рдЧрдЗрди" - рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ
- рдСрдЯреЛрд▓реЙрдб - рдСрдЯреЛрд▓реИрдб рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ
- рдЕрддрд┐рд░рд┐рдХреНрдд - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╡рд░реНрдЧ рдкреНрд▓рдЧрдЗрди рд╣реИ
рдкреНрд▓рдЧрдЗрди рджреЛ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдиреЗрдЧрд╛:
- рдкреНрд▓рдЧрдЗрди рд╣реАред рд╡рд╣ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЛ рдЕрдкрдирд╛ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЬреЛрдбрд╝ рджреЗрдЧрд╛
- рдЗрдВрд╕реНрдЯреЙрд▓рд░, рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рд▓рдЧреЗ рд╣реЛрдВрдЧреЗ
рдкреНрд▓рдЧрдЗрди рдмрд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓: Plugin.php )
namespace company_name\installer; use Composer\Composer; use Composer\EventDispatcher\EventSubscriberInterface; use Composer\IO\IOInterface; use Composer\Plugin\PluginInterface; class Plugin implements PluginInterface { public function activate(Composer $composer, IOInterface $io) { $composer->getInstallationManager()->addInstaller(new Bitrix($io, $composer)); } }
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЦреБрдж ( company_name\installer\Bitrix
)ред рд╢реНрд░реЗрдгреА рдХреЛ Composer\Installer\LibraryInstaller
рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
- рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ - рдЕрдЧрд░ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕рд╣реА рд╣реИ
- getInstallPath - рд╡рд╣ рдкрде рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдкреИрдХреЗрдЬ рд╕реНрд░реЛрдд рдХреЛрдб рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
- рд╕реНрдерд╛рдкрд┐рдд / рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж / рдЕрджреНрдпрддрди - рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд / рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж / рдЕрджреНрдпрддрди рд╣реБрдХ
рд╣рдорд╛рд░реЗ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕-рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдВрдЧреЗ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
public function supports($packageType) { return $packageType === 'bitrix-module'; }
рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдЗрд╕рдореЗрдВ company_name рдФрд░ mod_name рдПрдХ рдмрд┐рдВрджреБ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╣реИрдВ) рдФрд░ рд╕рдВрдХреБрд▓ рдХрд╛ рдирд╛рдо <my_name>/<company_name>.<mod_mame>
рдпрд╛ <company_name>/<company_name>.<mod_mame>
ред рдпрджрд┐ рд╣рдо рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрд▓реИрд╢ рд╕реЗ рддреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛
public function getInstallPath(PackageInterface $package) { $name = explode("/", $package->getName()); return "local/modules/{$name[1]}/"; }
InitBitrix рдФрд░ getModule рд╡рд┐рдзрд┐рдпрд╛рдБ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1C-Bitrix API рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╕реАрдПрдордПрд╕ рд╣реИ рдФрд░ рдХреИрд╕реЗ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ (рдлрд╛рдЗрд▓: Bitrix.php ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИред
namespace company_name\installer; use Composer\Installer\LibraryInstaller; use Composer\Package\PackageInterface; use Composer\Repository\InstalledRepositoryInterface; class Bitrix extends LibraryInstaller { public function supports($packageType) { return $packageType === 'bitrix-module'; } public function install(InstalledRepositoryInterface $repo, PackageInterface $package) { parent::install($repo, $package); $name = explode("/", $package->getName()); $this->initBitrix(); $module = $this->getModule($name[1]); $module->DoInstall(); } public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) { $name = explode("/", $package->getName()); $this->initBitrix(); $module = $this->getModule($name[1]); $module->DoUninstall(); parent::uninstall($repo, $package); } public function getInstallPath(PackageInterface $package) { $name = explode("/", $package->getName()); return "local/modules/{$name[1]}/"; } protected function initBitrix() { $_SERVER['DOCUMENT_ROOT'] = __DIR__ . "/../../../../"; define('STOP_STATISTICS', true); define("NO_KEEP_STATISTIC", "Y"); define("NO_AGENT_STATISTIC","Y"); define("NOT_CHECK_PERMISSIONS", true); require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'); $GLOBALS['APPLICATION']->RestartBuffer(); } protected function getModule($module) { include_once $_SERVER['DOCUMENT_ROOT'] . "/local/modules/" . $module . "/install/index.php"; $class = str_replace(".", "_", $module); $module = new $class(); return $module; } }
рдкреНрд▓рдЧрдЗрди рдХреЛ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдб рдХреЛ GitHub рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ Packagist рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рднрд╛рдЧ рджреЛ рддреАрдиред рдореЙрдбреНрдпреВрд▓
рдЖрдЗрдП рд╣рдо рдореЙрдбреНрдпреВрд▓ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рдпрд╛ рдмрд▓реНрдХрд┐, рдЙрдирдХреЗ рд╕рдВрдЧреАрддрдХрд╛рд░.рдЬреЙрди рдХреЛ ред
{ "name": "<my_name>/<company_name>.<mod_mame>", "type": "bitrix-module", "description": " ", "version": "1.0.0", "time": "11.09.2018", "minimum-stability": "dev", "license": "MIT", "homepage": "<link to homepage github>", "authors": [ { "name": "<name>", "email": "<email>" } ], "require": { "<my_name>/installer": "*" } }
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд╛рдо рдХреЛ рд╕реАрдПрдордПрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд┐рдЯреНрд░рд┐рдХреНрд╕-рдореЙрдбреНрдпреВрд▓ ) рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди (рдЕрдиреБрднрд╛рдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ ) рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрд╡рдпрдВ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, GitHub рдкрд░ рдЗрд╕рдХреЗ рдХреЛрдб рдХреЛ рднрд░реЗрдВ рдФрд░ рдЗрд╕реЗ Packagist рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред
рднрд╛рдЧ рджреЛ рдЪрд╛рд░ред рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рд╕рд╛рдЗрдЯ) рдореЗрдВ рдЦреБрдж рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдЧреАрддрдХрд╛рд░ рд╣реИрдВ
{ "name": "sites/<sitename>", "description": "<SiteName>", "authors": [ { "name": "<developerName>", "email": "<developerEmail>" } ], "minimum-stability": "dev", "require": {}, "config": { "vendor-dir": "local/vendor" } }
рдЕрдм рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЙрди рд╕рднреА рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
composer require "<my_name>/<company_name>.<mod_mame>" "*"
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдПрд╕рдПрдордПрд╕ рдореЗрдВ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рднреЗрдЬрдирд╛ рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдХрд╛рдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрд╡рдпрдВ рдПрдХ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдПрд╕рдПрдордПрд╕ рднреЗрдЬрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЙрдбреНрдпреВрд▓, рдПрд╕рдПрдордПрд╕ рднреА рднреЗрдЬрддреЗ рд╣реИрдВ, рдПрд╕рдПрдордПрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрд╕рдХрд╛ рдХреЛрдб рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рди рд╣реЛред рддреЛ REST рд╕реЗрд╡рд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рд╕рднреА рдЬрдЯрд┐рд▓ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рдЬрдм рдЖрдкрдХрд╛ рдореЙрдбреНрдпреВрд▓ рдЗрд╕рдХреЗ рд╕рд╛рде рдЪрд╛рд░ рдФрд░ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗрд╡рд▓ рд╕рд░рд▓ рд░рд╣рддреА рд╣реИред рдмрд╕ рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:
composer require "<my_name>/<company_name>.<mod_mame>" "*"
рдФрд░ рдХреНрдпрд╛ рдФрд░ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рд╕рдВрдЧреАрддрдХрд╛рд░ рддрдп рдХрд░рддреЗ рд╣реИрдВред
рднрд╛рдЧ рддреАрди рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓
рджреЛрд╕реНрддреЛрдВ, рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдореЗрдВ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдореЙрдбреНрдпреВрд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рд╣реЛрдЧрд╛, рддреЛ рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╣реИрд▓реЛ рднрдВрдбрд╛рд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- GitLab GitHub рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕реИрдЯрд┐рд╕ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬрдирд░реЗрдЯрд░ рд╣реИ рдЬреЛ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, GitLab рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рддрдм Satis рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ satis.json рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
{ "name": "ropoName", "homepage": "https://composer.<company_name>.ru/", "repositories": [ { "type": "vcs", "url": "https://gitlab.<company_name>.ru/<my_name>/installer" }, { "type": "vcs", "url": "https://gitlab.<company_name>.ru/<my_name>/<company_name>.<mod_name>" } ], "config": { "gitlab-domains": [ "gitlab.<company_name>.ru" ], "gitlab-token": { "gitlab.<company_name>.ru": "GitLab Token" } }, "require-all": true }
GitLab рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдЯреЛрдХрди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ api рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ satis.json рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдЧрд╛ ред рдЗрди рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:
php bin/satis build satis.json ./web
рдФрд░ рд╡реЗрдм рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдПрдХ рд╕реНрдерд┐рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ https: // рдХрдВрдкреЛрдЬрд╝рд░ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред <company_name> Ph /ред
рд╕рд╛рдЗрдЯ рдХрд╛ рдХрдВрдкреЛрдЬрд╝рд░.рдЬреЙрди рдХреЗрд╡рд▓ рдЙрд╕реА рдореЗрдВ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЙрд╕рдХрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдХреНрд╢рди рд╣реЛрдЧрд╛
{ "name": "sites/<sitename>", "description": "<SiteName>", "authors": [ { "name": "<developerName>", "email": "<developerEmail>" } ], "minimum-stability": "dev", "require": {}, "config": { "vendor-dir": "local/vendor" }, "repositories": [ { "type": "composer", "url": "https://composer.<company_name>.ru/" } ] }
рдЕрдВрддрднрд╛рд╖рдг
рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд░рд╣рд╛ рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ CMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рдкрд╛рдПрдВрдЧреЗ, рдЖрдк рдЗрд╕реЗ рд╕рдЦреНрддреА рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЖрдк "рдореЛрдЯреА" рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдИ "рдкрддрд▓реЗ" рд╕реНрд╡рд░реВрдкрдг рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдФрд░ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╕реМрднрд╛рдЧреНрдп рд╣реИред