рдПрдХ рд▓рд╛рдЦ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдареЗрд╕ рдкрд╣реБрдВрдЪрд╛рдиреЗ рд╡рд╛рд▓реА рдЦрддрд░рдирд╛рдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рд░реЛрд▓ рдХрд░реЗрдВ?


рдлрд┐рд▓реНрдо "рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ", 1980ред

рдЬрдм рдореИрдВрдиреЗ рдареЗрд╕ рдкрд░ рдПрдХ рдФрд░ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдбрд╛рд▓рд╛ рддреЛ рдореБрдЭреЗ рдХреИрд╕рд╛ рд▓рдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдкреВрд░реЗ рдХреЛрдб рдХреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ - рдпрд╣ рддреИрдирд╛рддреА рдХреЗ рдмрд╛рдж рдлреЗрдХреИрдкреНрд╕ рд╕реЗ 100% рдирд╣реАрдВ рдмрдЪрд╛рдПрдЧрд╛ред

рдкрд╣рд▓рд╛ рдлрдХрдк


рдХрд┐рд╕реА рддрд░рд╣ рд╣рдордиреЗ Google рд╢реАрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреА рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдореВрд▓реНрдпрд╡рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдПрдХ рдЯреЗрдмрд▓ рдкрд░ рд╕рдВрдкрд░реНрдХ рднреЗрдЬреЗрдВ, рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ, рдЖрджрд┐ред

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

20 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рд▓рд┐рдЦрд╛ рдХрд┐ рдПрдХреАрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Google рд╢реАрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдВрдж рд╣реЛ рдЧрдИ - рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдбрд┐рдмрдЧ рдХреЗ рд▓рд┐рдП рд╣рдо рдмрд┐рдХреНрд░реА рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ рд╣реИрдВред рдЬрдм рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдордиреЗ рдмреЗрдЪрдиреЗ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдорд╛рд░рд╛ред

рд╣рдордиреЗ рдПрдХреАрдХрд░рдг рдХреЛ рдареАрдХ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рд╢реБрдХреНрд░рд╡рд╛рд░ рд╢рд╛рдо рд╕реЗ рддрд▓рдЫрдЯ (рдФрд░ рдЖрдкрдХреЛ рд▓рдЧрд╛!) рд╢реЗрд╖ рд╣реИред рд░реЗрдЯреНрд░реЛрд╕реНрдкреЗрдХреНрдЯ рдореЗрдВ (рд╕реНрдкреНрд░рд┐рдВрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреАрдо рд╕реЗ рдорд┐рд▓рдирд╛), рд╣рдордиреЗ рдпрд╣ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд░реЛрдХрд╛ рдЬрд╛рдП - рд╣рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг, рдСрдЯреЛ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдЕрд▓рд╛рд░реНрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдЪрд░ рдлреНрд▓реИрдЧрд╢рд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓рд╛ред prode, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдпреЛрдЬрдирд╛ рд╕рд░рд▓ рд╣реИ: рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдзреНрд╡рдЬ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреЛрдб рдкрд░ рдЬрд╛рдПрдВ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ:

if ($user->hasFeature(UserFeatures::FEATURE_1)) {
  // new version
} else {
  // old version
}

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реНрд╡рдпрдВ рдкрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдкрд░ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдбрд╛рд▓рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред

рд▓рдЧрднрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЭрдВрдбреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдПрдХ рдЖрджрд┐рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛ред рджреЛ рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрд╕реНрдерд╛рдУрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдлрд╝реАрдЪрд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗ рдЧрдП, рдЬреЛ рдереЛрдбрд╝рд╛ рдореБрдЦреМрдЯрд╛ рдереЗ ред рдХреЛрдб рдореЗрдВ, рд╣рдордиреЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдП, рдЬреЛ рд╣рдордиреЗ рддрдм рдореБрдЦреМрдЯрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдерд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИред

public const ALLOW_FEATURE_1 = 0b0000001;
public const ALLOW_FEATURE_2 = 0b0000010;
public const ALLOW_FEATURE_3 = 0b0000100;

рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рд╕реЗ рджреЗрдЦрд╛ рдЧрдпрд╛:

If ($user->hasFeature(UserFeatures::ALLOW_FEATURE_1)) {
  // feature 1 logic
}

рдЬрдм рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЯреАрдо рдХреЛ рдзреНрд╡рдЬ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЦреБрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдпреЛрдЬрдирд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ, рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдиреАрдЪреЗред

рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рд╡рд╛рд▓реА рдЬрдЧрд╣ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛


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

рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рд╣рдордиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рдЖрдИрдбреА рд╣реИред рд╣рдордиреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдзреНрд╡рдЬ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЦреЛрд▓рдХрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬрдЯрд┐рд▓ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдХреЛрдб рдореЗрдВ рдЪреЗрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

If ($user->hasFeature(UserFeatures::CGT_REFACTORING) ||
    \in_array($cluster, Configurator::get('cgt_refactoring_cluster_ids'))) {
  // new version
} else {
  // old version
}

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдбрд╛рд▓рд╛ рдФрд░ рдЯреАрдо рдХреЛ рдЭрдВрдбреЗ рдЦреЛрд▓реЗред рдлрд┐рд░ рд╣рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд┐рд▓реЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ cgt рдлреАрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЙрдирдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ рдЦреЛрд▓реЗ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрд╛ рдХрд┐ рдХреНрдпрд╛ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЭрдВрдбреЗ рдЦреЛрд▓рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ред

Cgt_refactoring_cluster_ids рдзреНрд╡рдЬ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдо cgt_refactoring_cluster_ids рдХреЛ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - [1], рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдореАрдЯреНрд░рд┐рдХ рджреЗрдЦреЗрдВ рдФрд░ рдПрдХ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдЬреЛрдбрд╝реЗрдВ - [1, 2] рдЬрдм рддрдХ рд╣рдо рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддреЗред

рд╡рд┐рдиреНрдпрд╛рд╕рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдБред рдпрд╣ рддреИрдирд╛рддреА рдХреЗ рдмрд┐рдирд╛ рддрд░реНрдХ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рд╣рдореЗрдВ рддрд░реНрдХ рдХреЛ рддреЗрдЬреА рд╕реЗ рд░реЛрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╢реАрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рднреА рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреИрд╢рд┐рдВрдЧ рд╕рдордп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдорд╛рди рд╡рд╛рд▓реЗ рдлрд╝реАрд▓реНрдб рдХреА рд╕реВрдЪреА рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдпрд╣ рд╕рдм рдПрдХ DB рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо Redis рдореЗрдВ рдХреИрд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдореЗрдВред

рдкреБрд░рд╛рдиреА рдЬрдЧрд╣реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛


рдЕрдЧрд▓реА рддрд┐рдорд╛рд╣реА рдореЗрдВ, рд╣рдордиреЗ рдкрдВрдЬреАрдХрд░рдг рддрд░реНрдХ рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛, рдЗрд╕реЗ рдХрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдкрдВрдЬреАрдХрд░рдг рддрд░реНрдХ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рддрд╛рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реНрдХ рд╕реЗ рдмрдВрдзрд╛ рд╣реЛ, рдФрд░ рд╣рдо рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ, рд╕рднреА рдкрдВрдЬреАрдХрд░рдг рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рд╢рдд рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдирд╛ред рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдЗрд╕реА рддрд░рд╣ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:

If (Configurator::get('auth_refactoring_percentage') > \random_int(0, 99)) {
  // new version
} else {
  // old version
}

рддрджрдиреБрд╕рд╛рд░, рд╣рдо 0 рд╕реЗ 100 рддрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреИрдирд▓ рдореЗрдВ Cort_refactoring_percentage рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдордиреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдордиреЗ рдЕрдВрдд рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрд░реНрдХ рдХреЛ "рд╕реНрдореАрдпрд░" рдХрд┐рдпрд╛ред

рдореЗрдЯреНрд░рд┐рдХреНрд╕


рдЭрдВрдбреЗ рдЦреЛрд▓рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рдорд╛рдорд▓реЗ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЬрдм рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рдлреЗрд╕рдмреБрдХ рдореИрд╕реЗрдВрдЬрд░ рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рдмрд╣реБрдд рд╕реЗ рдлреЗрд╕рдмреБрдХ рдлреЗрд╕рдмреБрдХ рд╕реЗ рдлреЗрд╕рдмреБрдХ рд╣реБрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Cgt рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдлреЗрд╕рдмреБрдХ рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХреА рдереАред рдХреЛрдб рдореЗрдВ, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рд╡рд┐рдЬреЗрдЯрдЖрдИрдбреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрджреЗрд╢ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдлрд╝реАрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ
Facebook api. тАФ . Widget, :

тАФ> тАФ> тАФ> Facebook:



:
тАФ> тАФ>



тАЬ , !тАЭ , . , тАЬ !тАЭ id , тАФ , id.

рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд╕рдВрджрд░реНрдн рдХреЛ 3 рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рджреЗрдЦрд╛ рдЧрдпрд╛:

function getWidgetIdContext(User $user, WatchService $watcher): int?
{
  //      
  if (null !== $user->gt_widget_id_context) {
    $watcher->logTick('cgt_match_processor_matched_via_context');

    return $user->gt_widget_id_context;
  }

  //      
  if (null !== $user->name) {
    $widgetId = $this->cgtMatchByThread($user);
    if (null !== $widgetId) {
      $watcher->logTick('cgt_match_processor_matched_via_thread');

      return $widgetId;
    }

    $widgetId = $this->cgtMatchByConversation($user);
    if (null !== $widgetId) {
      $watcher->logTick('cgt_match_processor_matched_via_conversation');

      return $widgetId;
    }
  }

  return null;
}

рдЪреМрдХреАрджрд╛рд░ рд╕реЗрд╡рд╛ рдореИрдЪ рдХреЗ рд╕рдордп рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рднреЗрдЬрддреА рд╣реИ, рдХреНрд░рдорд╢рдГ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдереЗ:


рд╕рдордп рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрджрд░реНрдн рдХреЛ рдЬрд┐рддрдиреА рдмрд╛рд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдореИрдЪ рд╡рд┐рдзрд┐ рдорд┐рд▓реА рдЬреЛ рд╕рднреА рдкреБрд░рд╛рдиреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдореАрдЯреНрд░рд┐рдХ рдорд┐рд▓реА:

function getWidgetIdContext(User $user, WatchService $watcher): int?
{
  //    
  $widgetId = $this->cgtMatchByEcho($user);
  
  if (null !== $widgetId) {
      $watcher->logTick('cgt_match_processor_matched_via_echo_message');
  }

  //    
  // ...
}

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдирдИ рд╣рд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреБрд░рд╛рдиреА рд╣рд┐рдЯреНрд╕ рдХреЗ рдпреЛрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╕ $ рд╡рд┐рдЬреЗрдЯ рд╡рд╛рдкрд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдореАрдЯреНрд░рд┐рдХ рд▓рд┐рдЦреЗрдВ:


рдирдИ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдпреЛрдЧ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИ

рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдкрд░ рд╕рд╣реА рдорд┐рд▓рд╛рди рддрд░реНрдХ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдХрджрдо рдЭрдВрдбреЗ рдХреЗ рдЙрджреНрдШрд╛рдЯрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдорд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ:

function getWidgetIdContext(User $user, WatchService $watcher): int?
{
  //    
  $widgetId = $this->cgtMatchByEcho($user);
  
  if (null !== $widgetId) {
    $watcher->logTick('cgt_match_processor_matched_by_echo_message');
  
    //    ,   
    If ($this->allowMatchingByEcho($user)) {
      return $widgetId;
    }
  }

  // ...
}

function allowMatchingByEcho(User $user): bool
{
  //    
  If ($user->hasFeature(UserFeatures::ALLOW_CGT_MATCHING_BY_ECHO)) {
    return true;
  }
  //     
  If (\in_array($this->clusterId, Configurator::get('cgt_matching_by_echo_cluster_ids'))) {
    return true;
  }

  return false;
}

рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реБрдИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдордиреЗ рд╕рднреА рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдкрд░ рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдЬреЛ рдЕрдХреНрд╕рд░ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд▓рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ UserFeatures :: ALLOW_CGT_MATCHING_BY_ECHOред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдордиреЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкрдХрдбрд╝рд╛ рдЬрдм рдореИрдЪ рдиреЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЙрдирдХреА рдорд░рдореНрдордд рдХреАред рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛: рдФрд╕рддрди, рд╣рдордиреЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рджреМрд░рд╛рди 1 рджрд┐рди рдореЗрдВ рдПрдХ рд╕рд░реНрд╡рд░ рдХреЛ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд┐рдпрд╛ред рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рдорд░реНрдерди рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯрд┐рдХрдЯреЛрдВ рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦреЗрдВ рдФрд░ рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВред рд╕рдорд░реНрдерди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрдИ рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рддрдп рдХрд┐рдП рдЧрдП рдереЗред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд┐рдо рдЪрд░рдг рд╕рднреА рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреЗ рдЦреЛрдЬ рд╣реИ:

function getWidgetIdContext(User $user, WatchService $watcher): int?
{
  $widgetId = $this->cgtMatchByEcho($user);
  
  if (null !== $widgetId) {
    $watcher->logTick('cgt_match_processor_matched_by_echo_message');
  
    return $widgetId;
  }

  return null;
}

рдирдпрд╛ рдзреНрд╡рдЬ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


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

рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рдкрдХреНрд╖


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдЛрдг рд╣реИ - рдХреЛрдб рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рд╕рдордп рд╕рдорд░реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рддрд░реНрдХ рдХреА рджреЛ рд╢рд╛рдЦрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдереАрдВ рдЬрдм рд╣рдордиреЗ рдПрдХ рддрд░реНрдХ рдореЗрдВ рдПрдХ рд╕реБрдзрд╛рд░ рдкреЗрд╢ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдП, рдФрд░ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рдЧреЛрд▓реА рдорд╛рд░ рджреАред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдмрд╛рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдЫреЛрдЯреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрдкреВрд░реНрдг


рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ - рдкрд╣рд▓реЗ рд╣рдо рдЭрдВрдбреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рддрд╣рдд рддрд░реНрдХ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЭрдВрдбреЗ рдЦреЛрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЭрдВрдбреЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдореАрдЯреНрд░рд┐рдХ рдХреА рдмрд╛рд░реАрдХреА рд╕реЗ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╣реА рдХреБрдЫ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ - рддреБрд░рдВрдд рдзреНрд╡рдЬ рдХреЛ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░реЗрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯреЗрдВред рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдзреНрд╡рдЬ рдХреЛ рдЦреЛрд▓рдирд╛ / рдмрдВрдж рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ - рдпрд╣ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдореВрд▓реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрджрд▓рд╛рд╡ рд╣реИред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рд╣рдордиреЗ рдХреЛрдб рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛, рдХреЛрдб рдХреЗ рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдиреНрдпреВрдирддрдо рд╕рдордп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╣рдо рдЬреАрдердм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдРрд╕реЗ рд░рд┐рдлрд╝реИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдХреЛрдб рд╕реНрд╡рд╛рдорд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд░реАрдлрд╝реИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛрдб рдореЗрдВ рди рдЖрдПред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдлреЗрд╕рдмреБрдХ рдЧреНрд░рд╛рдлрд╝ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ, рд╣рдо рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП 3000 рд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рднреА рддреНрд░реБрдЯрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рдВрдЧреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдзреНрд╡рдЬ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ - рдореИрдВ рдПрдХ рдЕрдкреНрд░рд┐рдп рдмрдЧ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪрд┐рдВрддрд╛ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред

All Articles