PSR-14 - PHP рдореЗрдВ рдореБрдЦреНрдп рдШрдЯрдирд╛

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

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдпрд╣ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ рдЬрд┐рд╕рдореЗрдВ PHP-FIG рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд▓реИрд░реА (рдХреНрд░реЗрд▓) рдЧрд╛рд░рдлреАрд▓реНрдб рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ PSR-14 рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдХреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рдЙрдирдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯред

рд▓рдХреНрд╖реНрдп


рдШрдЯрдирд╛ рдкреНрд░реЗрд╖рдг рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рд╕рд┐рдореНрдлрдиреА рдореЗрдВ EventDispatcher, Laravel рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо, Drupal рдореЗрдВ рд╣реБрдХ, Zend рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ , League \ Event рдкреИрдХреЗрдЬ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред

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

рдпрд╣ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдЬреБрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрдХрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рдХреЛрдб рдЙрдирд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХреЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдордзреНрдпрд╕реНрде рдкрд░рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣реИред рд╕рд┐рдореНрдлрдиреА EventDispatcher рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕рд┐рдореНрдлрдиреА рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП EventDispatcher рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛ Drupal module_invoke_all() рд╕реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдлрд┐рд░ Drupal рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИред рдФрд░ рдЗрд╕реА рддрд░рд╣ред

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

рд╡рд┐рдирд┐рд░реНрджреЗрд╢


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

 namespace Psr\EventDispatcher; interface EventDispatcherInterface { public function dispatch(object $event); } interface ListenerProviderInterface { public function getListenersForEvent(object $event) : iterable; } interface StoppableEventInterface { public function isPropagationStopped() : bool; } 

рдкрд╣рд▓реЗ рджреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдореВрд▓ рд╣реИрдВред StoppableEventInterface рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдмрд╛рдж рдореЗрдВ рд▓реМрдЯреЗрдВрдЧреЗред

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

рдЕрдзрд┐рдХрд╛рдВрд╢ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдордзреНрдпрд╕реНрде рдпрд╛ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛ (рд╢реНрд░реЛрддрд╛рдУрдВ) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред PSR-14 рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрди рджреЛ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдбрд┐рд╕реНрдкреИрдЪрд░ рдкреНрд░рджрд╛рддрд╛ рд╕реВрдЪреА рд╕реЗ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕реВрдЪреА рдХреЛ рдмрдирд╛рддрд╛ рд╣реИред

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

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

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

рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ


рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

 class Dispatcher implements EventDispatcherInterface { public function __construct(ListenerProviderInterface $provider) { $this->provider = $provider; } public function dispatch(object $event) { foreach ($this->provider->getListenersForEvent($event) as $listener) { $listener($event); } return $event; } } $dispatcher = new Dispatcher($provider); $event = new SomethingHappened(); $dispatcher->dispatch($event); 

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

рдХреЛрдб


PSR-14 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдореБрдЦ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред

  • рдореИрдереНрдпреВ рд╡реАрдпрд░ рдУ'рдкрдиреА рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЬрд╝реЗрдВрдб-рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдореЗрдВ рдкреАрдПрд╕рдЖрд░ -14 рдХреЗ рд▓рд┐рдП рдЬрд╝реЗрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕рдорд░реНрдерди рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рд╣реИред
  • рд╕рд┐рдореНрдлрдиреА рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ PSR-14 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП EventDispatcher рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШреЛрд╖рдгрд╛ рдХреА , рдЬреЛ 5.0 / 5.1 рдореЗрдВ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рджреЗрдЧрд╛ред
  • Yii рдлреНрд░реЗрдорд╡рд░реНрдХ рдиреЗ PSR-14 рдХреЛ 3.0 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЗрд░рд╛рджреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред
  • TYPO3 CMS рдХреЗ рдмреЗрдиреА рдореИрдХ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЕрдЧрд▓реЗ TYPO3 рд░рд┐рд▓реАрдЬ рдореЗрдВ, рд╕рднреА рдореМрдЬреВрджрд╛ рдЯреНрд░реИрдк + рд╕рд┐рдЧреНрдирд▓ / рд╕реНрд▓реЙрдЯ рдХреЙрдиреНрд╕реЗрдкреНрдЯ PSR-14 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗред

PSR-14 рдореЗрдВ рддреАрди рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ рдЬреЛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


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

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

Source: https://habr.com/ru/post/hi450812/


All Articles