рд╕рд░реНрдкрд┐рд▓: рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдкреАрдПрдЪрдкреА / рдЧреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ



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

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

рдЕрдзрд┐рдХрд╛рдВрд╢ PSR рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд╕рд╛рде рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрдЧрдд рд╣реИ, MVC рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рд░рд╡реЗрд▓ / рд╕рд┐рдореНрдлрдиреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 5-10 рдЧреБрдирд╛ рддреЗрдЬ рдЪрд▓рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рд╕рд░реНрдкрд┐рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ рдФрд░ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ PHP / Go рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╣рд╛рдВ рдЧрдпрд╛, рддреЛ рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рд╕рд░реНрдкрд┐рд▓ рд╡рд┐рдХрд╛рд╕ 2008/09 рдореЗрдВ рдлреНрд░реАрд▓рд╛рдВрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рдХрд░реНрдиреЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╣реБрдЖред 2010 рдореЗрдВ, рд╣рдордиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдПрдХ рдЖрдЙрдЯрд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХрдВрдкрдиреА рдмрдирд╛рдИ рдФрд░ рддрдм рд╕реЗ рдЕрдкрдиреЗ рд╕реНрдЯреИрдХ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВред

рдирддреАрдЬрддрди, рд░реВрдкрд░реЗрдЦрд╛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдПрдХреАрдХрд░рдг рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдХреАрдХрд░рдг рдкрд░рдд рджреНрд╡рд╛рд░рд╛ рдПрдХрдЬреБрдЯ рд╣реЛрдХрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдИред

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

рдПрдХ рд╕рд╛рд▓ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЬрдирддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рдкрд┐рдЫрд▓реА рдкреАрдврд╝реА рдХреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рд╕реНрдкрд╛рдЗрд░рд▓ 2.0 рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдФрд░, рд╢рд╛рдпрдж, рдЕрдиреНрдп рд╕рднреА рдореМрдЬреВрджрд╛ PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ, рдПрдХреАрдХреГрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд░реЛрдбрд░рдирд░ рд╣реИ, рд╕рд╛рде рд╣реА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЙрдбрд▓ (рдбреЗрдорди рдореЛрдб) рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рдиред

рд╣рд╛рдЗрдмреНрд░рд┐рдб рд░рд╛рдВрдереАрдо


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



рдЖрдк рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдореЙрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред

рд╕рд░реНрд╡рд░ рдкреВрд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ: HTTP / FastCGI, рдХрддрд╛рд░ рджрд▓рд╛рд▓реЛрдВ, рдЬреАрдЖрд░рдкреАрд╕реА, рд╡реЗрдм рдкреЙрдХреЗрдЯреНрд╕, рдкрдм / рд╕рдм, рдХреИрд╢, рдореЗрдЯреНрд░рд┐рдХреНрд╕, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ред

рд╕рд░реНрдкрд┐рд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, SOLID рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдкрд╣рд▓реЗ рд╕рд┐рдВрдЧреНрд▓рдЯрди рдореЗрдВ рдкрд╣рд▓реЗ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЧрдВрднреАрд░ рджрд░реНрдж рд╣реЛрддрд╛ рдерд╛, рддреЛ рдЕрдм рдРрд╕рд╛ рдХреЛрдб рдХреЗрд╡рд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

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

рдкреИрд░ рдореЗрдВ рд╢реВрдЯ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рдерд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдШрдЯрдирд╛рдУрдВ рдФрд░ рд╣реБрдХ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рдХрд╛рдо рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

$container->runScope(
    [UserContext::class => $user],
    function () use ($container) {
        dump($container->get(UserContext::class);
    }
);

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

рдкреНрд░рджрд░реНрд╢рди


PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдкреВрд░реНрдг-рд╕реНрдЯреИрдХ рд╡рд░реНрдЧ рдореЗрдВ, рд╕рд░реНрдкрд┐рд▓ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрд╡реЛрд▓-рдЖрдзрд╛рд░рд┐рдд рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдХрдИ рдорд╛рдЗрдХреНрд░реЛ-рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рддрд╛ рд╣реИред



рдкреВрд░реНрдг рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред

рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдкреНрд░рджрд░реНрд╢рди рдЪреБрдиреЗ рд╣реБрдП рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдПрдХ рдкрдХреНрд╖ рдкреНрд░рднрд╛рд╡ рд╣реИред рд╣рдореЗрдВ рдпрдХреАрди рд╣реИ рдХрд┐ рдЙрдЪрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдФрд░ рдкреАрдПрд╕рдЖрд░ -7 рдХреЛ рдПрдХ рд╣рд▓реНрдХреЗ рдЕрдореВрд░реНрдд рдХреЗ рд╕рд╛рде рдмрджрд▓рдХрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ 50-80% рддрдХ рдмрдврд╝рд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ (рдпрд╣ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкрдХ-рд░реЛрдбреНрд░рдирд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕рд╛рдмрд┐рдд рд╣реЛрддрд╛ рд╣реИ )ред

Swoole. Swoole RoadRunner, PHP ++. , Go. , .

RoadRunner ( ), , Windows.

Spiral Swoole, !

PSR-*


рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░реНрдкрд┐рд▓ рдШрдЯрдХ рдЖрдкрдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рд╕реВрдХреНрд╖реНрдо рдФрд░ рдкреВрд░реНрдг рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╣реИ composer.jsonред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА HTTP рдкрд░рдд рдХреЛ PSR-7/15/17 рдорд╛рдирдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд░рд╛рдЙрдЯрд░ , рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрджрд┐ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реВрдкрд░реЗрдЦрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, RoadRunner рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ Symfony рдФрд░ Laravel , рдФрд░ рд╕рд╛рдЗрдХрд┐рд▓ ORM Yii3 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╕рд░реНрд╡рд░ рдШрдЯрдХ


PHP рдШрдЯрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реЛрдбрд░рдирд░ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдЧреЛрд▓рдВрдЧ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ PHP рдХреЗ рднреАрддрд░ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдПрдХ рдХрддрд╛рд░ рдШрдЯрдХ рд╣реИ рдЬреЛ рджрд▓рд╛рд▓реЛрдВ рдПрдПрдордХреНрдпреВрдкреА, рдЕрдореЗрдЬрд╝реЕрди рдПрд╕рдХреНрдпреВрдПрд╕ рдФрд░ рдмреАрдирд╕реНрдЯреЙрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрдИ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реА рдХрддрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд░реЛрдХ, рдкреБрди: рдХрдиреЗрдХреНрдЯ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

INFO[0154] 10.42.5.55:51990 Ok {2.28ms} /images.Service/GetFiles
INFO[0155] 10.42.3.95:50926 Ok {11.3ms} /images.Service/GetFiles
INFO[0156] 10.42.5.55:52068 Ok {3.60ms} /images.Service/GetFiles
INFO[0158] 10.42.5.55:52612 Ok {2.30ms} /images.Service/GetFiles
INFO[0166] 10.42.5.55:52892 Ok {2.23ms} /images.Service/GetFiles
INFO[0167] 10.42.3.95:49938 Ok {2.37ms} /images.Service/GetFiles
INFO[0169] 10.42.5.55:52988 Ok {2.22ms} /images.Service/GetFiles




рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА


рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП PHP-FPM рдФрд░ NGINX рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕рднреА рдЧреЛрд▓рд╛рдВрдЧ рдШрдЯрдХреЛрдВ рдореЗрдВ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдмрд╛рд╣рд░реА рджрд▓рд╛рд▓реЛрдВ рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрддрд╛рд░реЛрдВ, рд╡реЗрдмрд╕реЛрдХреЗрдЯреНрд╕, рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

./spiral serve -v -d

рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╡рд┐рддрд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ "рд╣рдореЗрдВ рд▓рд┐рдЦреЛ" рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕рд╛рдЗрдЯ рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рд╕рд░реНрдкрд┐рд▓ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕реНрдерд╛рдиреАрдп рдФрд░ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╣реА рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЪреВрдВрдХрд┐ HTTP рд▓реЗрдпрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдЖрдк рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрддрд╛рд░ рдХреЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╛рдЗрдХрд┐рд▓ рдУрдЖрд░рдПрдо


рдЬреИрд╕реЗ-рдЬреИрд╕реЗ ORM рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЖрддрд╛ рд╣реИ Cycle ORM рдЖрддрд╛ рд╣реИ ред рдпрд╣ рдбреЗрдЯрд╛ рдореИрдкрд░ рдЗрдВрдЬрди, рдбреЙрдХреНрдЯреНрд░рд┐рди рдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╣реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдЕрд▓рдЧ рд╣реИред

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

//    
//        
$users = $orm->getRepository(User::class)
    ->select()
    ->where('active', true)
    ->load('orders', [
        'method' => Select::SINGLE_QUERY, // force LEFT JOIN
        'load'   => function($query) {
            $query->where('paid', true)->orderBy('timeCreated', 'DESC');
        }
    ])
    ->fetchAll();

$transaction = new Transaction($orm);

foreach($users as $user) {
    $transaction->persist($user);
}

$transaction->run();

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

рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг PHP рд░реВрд╕ 2020 рдкрд░ рд╕реБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

ORM рдХрд╛ рдореБрдЦреНрдп "рдлреАрдЪрд░" рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рд▓рд┐рдВрдХ рдХреА рдореИрдкрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (DBAL рд╕рдорд░реНрдерди рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)ред

рдЖрдк рд╕рд╛рдЗрдХрд┐рд▓, рд╕реБрд╡рдХреНрддрд╛, рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд 2 рдХреА рддреБрд▓рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдБ ред

рддрд┐рд╡реНрд░ рдкреНрд░рддрд┐рдХреГрддрд┐


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

рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд░реИрдкрд┐рдб рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдореИрдЬрд┐рдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЯреЛрдЯреНрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк IDE рдореЗрдВ рдпреБрдХреНрддрд┐рдпреЛрдВ рддрдХ рддреНрд╡рд░рд┐рдд рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ ORM рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рдорд╛рдирдХ рдШрдЯрдХ рдвреВрдВрдврддреА рд╣реИ рдФрд░ рдПрдиреЛрдЯреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЖрдкрдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рд╣реБрдб рдХреЗ рддрд╣рдд, рдЬрд╛рджреВ __get рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд╡рд░рд┐рдд рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред

рдмрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдПрдВ `php app.php рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк: рдЗрдВрдЬреЗрдХреНрдЯ -r`, рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдЬрд╛рджреВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛:

namespace App\Controller;

use App\Database\Repository\UserRepository;
use Spiral\Views\ViewsInterface;

class HomeController
{
    /** @var ViewsInterface */
    private $views;

    /** @var UserRepository */
    private $users;

    /**
     * @param ViewsInterface $views
     * @param UserRepository $users
     */
    public function __construct(ViewsInterface $views, UserRepository $users)
    {
        $this->users = $users;
        $this->views = $views;
    }

    public function index()
    {
        return $this->views->render('profile', [
            'user' => $this->users->findByName('Antony')
        ]);
    }
}

рд╣реБрдб рдХреЗ рддрд╣рдд, PHP-Parser рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рд╕реБрд░рдХреНрд╖рд╛


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

рдЬрдЯрд┐рд▓ рдЕрдиреБрд░реЛрдзреЛрдВ (рдЕрдиреБрд░реЛрдз рдлрд╝рд┐рд▓реНрдЯрд░), CSRF рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди ( рдбрд┐рдлреНрдпреВрдЬрд╝ / php-рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд) рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ ред рдХреБрдХреАрдЬ рдФрд░ рд╕реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рд╡рд┐рд░реЛрдзреА рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдХ рд╕рдорд╛рдкреНрддрд┐ рдЯреЛрдХрди рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд╕рддреНрд░, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рд╢реБрджреНрдз JWT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреЛрдХрди, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ "SAML / SSO / 2FA рдХреЛ рддрддреНрдХрд╛рд▓ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ!" :(

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

рдбреЛрдореЗрди рдкрд░рдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдкрд░рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ ред рддреЛ рдЖрдк рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рдореВрд╣ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддрд┐рдмрдВрдз рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░реНрд╡-рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рдБрдЪрд╛ рдЗрдВрдЬрди


рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЯрд╣рдиреА рдкрд╕рдВрдж рд╣реИ - рддреЛ рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред :)

рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╕реНрдЯреИрдореНрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди, рдпрд╛ рдмрд▓реНрдХрд┐, рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдбреАрдПрд╕рдПрд▓ рдорд╛рд░реНрдХрдЕрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдПрдХ рдкреВрд░реНрдг рд▓реЗрдХреНрд╕рд░, рдХрдИ рд╡реНрдпрд╛рдХрд░рдг, рдПрдХ рдкрд╛рд░реНрд╕рд░ рдФрд░ рдПрдПрд╕рдЯреА рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ (рдирд┐рдХрд┐рддрд╛ рдХреЗ рдкреАрдПрдЪрдкреА-рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рдорд╛рди)ред

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

рд╣рдо рд╕рд░рд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдФрд░ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдЯрд┐рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

<extends:admin.layout.tabs title="User Information"/>
<use:bundle path="admin/bundle"/>

<ui:tab id="info" title="Information">
  User, {{ $user->name }}
</ui:tab>

<ui:tab id="data" title="User Settings">
  <grid:table for={{ $user->settings }}>
    <grid:cell title="Key">{{ $key }}</grid:cell>
    <grid:cell title="Value">{{ $value }}</grid:cell>
  </grid:table>
</ui:tab>

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

рдврд╛рдВрдЪрд╛ рд╡рд┐рдХрд╛рд╕


рдмреЗрд╢рдХ, рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдПрдХ рджрд╢рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдореЗрдВ, рд╣рдордиреЗ рдХрдИ рдЧрд▓рддрд┐рдпрд╛рдВ рдХреА рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

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

рдирд╡реАрдирддрдо RFC рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рд╛рдЗрдХрд▓ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рд╕рд╛рде рд╣реА рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдлрд┐рд▓реНрдЯрд░реНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдХрд╛рдо рдФрд░ рдЕрдиреБрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рд╣реИред

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

рд╕рдореБрджрд╛рдп рдФрд░ рд▓рд┐рдВрдХ


рдЖрдк рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ рдбрд┐рд╕реНрдХреЛрд░реНрдб рд╕рдореБрджрд╛рдп рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ ред


рд╕рднреА рдХреЛрдб рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрдкрдХрд░рдг рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рдо рдЖрдПрдВрдЧреЗ!

All Articles