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

рдЖрдЗрдП OOP рдирд┐рдпрдореЛрдВ рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдврд╛рдВрдЪреЗ рдХреЛ рдЧрд┐рд░рд╛рдПрдВ рдФрд░ PHP рд╕реНрдХреВрд▓ рдСрдл рдореИрдЬрд┐рдХ рдореЗрдВ рдЕрд╕рдВрднрд╡ рдХреЛ рд╕рдВрднрд╡ рдХрд░реЗрдВред рд╕реНрдХреВрд▓ рдХрд╛ рдореБрдЦреНрдп рдФрд░ рдкрд╣рд▓рд╛ рдЬрд╛рджреБрдИ рд╢рд┐рдХреНрд╖рдХ
рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рд▓рд┐рд╕рд╛рдЪреЗрдВрдХреЛ (
рдирд╛рдЗрдЯрдЯрд╛рдЗрдЧрд░ ) рд╣реИред рд╡рд╣ рдЬрд╛рджреВ рдХреА рд╕реЛрдЪ рд╕рд┐рдЦрд╛рдПрдЧрд╛ рдФрд░ рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЬрд╛рджреВ рдХреЗ рддрд░реАрдХреЗ, рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдЧреИрд░-рдорд╛рдирдХ рддрд░реАрдХреЗ, рдмрджрд▓рддреЗ рд╕рдВрджрд░реНрдн, рдкрд╣рд▓реВ-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдлрд┐рд▓реНрдЯрд░ рдкрд╕рдВрдж рдЖрдПрдЧрд╛ред
рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рд▓рд┐рд╕рд╛рдЪреЗрдВрдХреЛ рдЕрд▓реНрдкрд╛рд░реА рдореЗрдВ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╡рд┐рднрд╛рдЧ рдХреЗ рдкреНрд░рдореБрдЦ рд╣реИрдВред рд▓реЗрдЦрдХ рдФрд░ рдкрд╣рд▓реВ рдЙрдиреНрдореБрдЦ рдврд╛рдВрдЪреЗ рдХреЗ рдкреНрд░рдореБрдЦ рдбреЗрд╡рд▓рдкрд░
рдЬрд╛рдУ! рдПрдУрдкреА ред PHP рдкрд░ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рдЕрдзреНрдпрдХреНрд╖ред
рдЕрдЪреНрдЫреА рдлрд┐рд▓реНрдо рдореЗрдВ "рдзреЛрдЦреЗ рдХрд╛ рднреНрд░рдо" рдПрдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реИ:
"рдЖрдк рдЬрд┐рддрдиреЗ рдХрд░реАрдм рд╣реЛрдВрдЧреЗ, рдЖрдкрдХреЛ рдЙрддрдирд╛ рд╣реА рдХрдо рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред"
PHP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдЬрд╛рджреВ рдХреА рдЪрд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЖрдкрдХреЛ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: "... рдПрдХ рдРрд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЬрд┐рд╕реЗ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рдпрд╛ рддреЛ рдХрд┐рд╕реА рдХреЛ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╛ рдПрдХ рдордЬрд╛рдХ рдпрд╛ рдордиреЛрд░рдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВред"
рдпрджрд┐ рд╣рдо PHP рдХреЛ рдПрдХ рд╕рд╛рде рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рдХреБрдЫ рдЬрд╛рджреБрдИ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рдзреЛрдЦрд╛ рджреВрдВрдЧрд╛ред рдореИрдВ рдХреБрдЫ рдЪрд╛рд▓ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЛрдЪ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ PHP рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреА рдЬрд╛рддреА рд╣реИред
рдЬрд╛рджреВ рдХреЗ рдЙрдкрдХрд░рдг
рд╣рдореЗрдВ рдЬрд╛рджреВ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рджрд░реНрдж рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рддрд░реАрдХреЗред
__construct(), __destruct(), __clone(),
__call(), __callStatic(),
__get(), __set(), __isset(), __unset(),
__sleep(), __wakeup(),
__toString(), __invoke(), __set_state(),
__debugInfo()
рдореИрдВ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдиреЛрдЯ рдХрд░реВрдВрдЧрд╛ - рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЕрд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рдХреНрд░реИрдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред
declare(ticks=1)
ред
debug_backtrace()
ред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рд╕рд╛рдереА рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдореЗрдВ рдХрд╣рд╛рдВ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕рдиреЗ рдФрд░ рдХреНрдпреЛрдВ, рдХрд┐рд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ред рд╕рднреА рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
unset(), isset()
ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЗ рдбрд┐рдЬрд╛рдЗрди рдмрд╣реБрдд рд╕рд╛рд░реА рдЪрд╛рд▓реЗрдВ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЖрдЧреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
by-reference passing
ред рдЬрдм рд╣рдо рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдпрд╛ рдЪрд░ рдХреЛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреБрдЫ рдЬрд╛рджреВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╕рд╛рде рд╣реЛрдЧрд╛ред
bound closures
ред рдмрдВрдж рд╣реЛрдиреЗ рдФрд░ рдЗрд╕ рддрдереНрдп рдкрд░ рдХрд┐ рд╡реЗ рдмрд╛рдВрдз рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реА рдЪрд╛рд▓реЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
- StreamWrapper APIред
рдЙрдкрдХрд░рдг рддреИрдпрд╛рд░ рд╣реИ - рдореИрдВ рдЬрд╛рджреВ рдХреЗ рдкрд╣рд▓реЗ рдирд┐рдпрдо рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдКрдВрдЧрд╛ред
рдХрдорд░реЗ рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдЪрддреБрд░ рдЖрджрдореА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЯреНрд░рд┐рдХ # резред рдЕрд╕рдВрднрд╡ рддреБрд▓рдирд╛
рдЪрд▓реЛ рдкрд╣рд▓реА рдЪрд╛рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрд╕рдВрднрд╡ рддреБрд▓рдирд╛ рдХрд╣рддрд╛ рд╣реВрдВред
рдХреЛрдб рдХреЛ рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ PHP рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЪрд░ рд╣реИ, рд╣рдо рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЕрдЪрд╛рдирдХ рдпрд╣ рдЦреБрдж рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдирд╣реАрдВ рдПрдХ рдирдВрдмрд░
NaN рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЬрд╛рджреБрдИ рдХрд▓рд╛рдХреГрддрд┐ рд╣реИ - рдиреЙрдЯ-рдП-рдирдВрдмрд░ред

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

рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо
namespace
рд▓рд┐рдП
false
рдХреЛ
true
рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд╢реБрдн рдбреЗрд╡рд▓рдкрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЖрд╢реНрдЪрд░реНрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВ
true
рдФрд░
false
рдирд╣реАрдВ
false
ред
рд╣реИрдВрдбрд▓рд░
рдЕрдЧрд▓реА рдЪрд╛рд▓ рджреЛ рдкрд┐рдЫрд▓реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддреЛрдкрдЦрд╛рдиреЗ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЯреНрд░рд┐рдХ
tick_function
рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ,
declare(ticks=1)
ред
рдпрд╣ рд╕рдм рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрджрд░реНрдн рд╕реЗ рдпрд╣
isMagic
рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдЗрд╕ рдорд╛рди рдХреЛ
true
рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛
true
ред рдЬрдм рд╣рдордиреЗ
declare(ticks=1)
рдШреЛрд╖рд┐рдд
declare(ticks=1)
рдмрд╛рдж, PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдердорд┐рдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж
register_tick_function
- рдХреЙрд▓рдмреИрдХ рдХрд╣рддрд╛ рд╣реИред рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдореЗрдВ, рд╣рдо рдЙрд╕ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ
false
рд╕реЗ
true
ред рдЬрд╛рджреВ!
рдЯреНрд░рд┐рдХ # реиред рдЬрд╛рджреВ рдХреЗ рднрд╛рд╡
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ
false
, рджреВрд╕рд░реА
true
ред рд╣рдо
isBlack
рдФрд░
isWhite
рдФрд░ var_dump рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдВрдЪрд╛рд▓рдХ ред рд╕рд╣реА рдЙрддреНрддрд░
false
, рдХреНрдпреЛрдВрдХрд┐ PHP рдореЗрдВ "рдСрдкрд░реЗрдЯрд░ рдкреВрд░реНрд╡рддрд╛" рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рд╣реИред

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

рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
$value = new $factory->build(Foo::class);
рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬреЛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
$factory
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА;
- рдХреЙрд▓
$factory->build()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕ рдореВрд▓реНрдп рдкрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛, рдкрд░рд┐рдгрд╛рдо new
рд╣реЛрдЧрд╛;
$factory->build
рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд▓рд╛рд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЗрдП рдЕрдВрддрд┐рдо рд╡рд┐рдЪрд╛рд░ рджреЗрдЦреЗрдВред
$factory
рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рдЬрд╛рджреВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ: рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░
invoke
рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
class Factory { public function _get($name) {echo "Getting property {$name}"; return Foo::class;} public function _call($name, $arg) {echo "Calling method {$name}"; return Foo::class;} public function _invoke($name) {echo "Invoking {$name}"; return Foo::class;} }
рд╕рд╣реА рдЙрддреНрддрд░: рд╣рдо рдПрдХ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИред
$factory->build
рдмрд╛рдж
$factory->build
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рд╡реИрд╕реЗ, рдЗрд╕ рд░реВрдкрд░реЗрдЦрд╛ рдореЗрдВ рдореИрдВрдиреЗ "рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд░реЛрдХрдирд╛" рдирд╛рдордХ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ - рдЖрдк рдЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдХреЛ "рд▓реЙрдХ" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╛рд░реНрд╕рд░ рд▓реЛрдлреЛрд▓
рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг PHP рдкрд╛рд░реНрд╕рд░ рдХреЗ рд▓рд┐рдП рд╣реА рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдпрд╛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рдЕрдВрджрд░ рд╡реИрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИ?

рдореБрдЭреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдпрд╣ рдЯреНрд░рд┐рдХ рдорд┐рд▓реА, рдпрд╣ рдмреЗрд╣рдж рдЕрдорд╛рдирдХ рд╣реИред
$result = ${'_' . !$_=getCallback()}(); $_=getCallback();
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ
_
(рдЕрдВрдбрд░рд╕реНрдХреЛрд░) рдирд╛рдо рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЪрд░ рд╣реИ, рд╣рдо рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЙрд▓рдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо
false
- рд▓рд╛рдЗрди рдХреЛ
true
рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛
true
ред рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдЪрд░ рдирд╛рдо рд╕реЗ рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рдЧреЛрдВрдж рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдлрд┐рд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдХреЗ рдЕрдВрджрд░ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред
рдЬрд╛рджреВ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдордиреЛрд░рдВрдЬрди рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдкреНрд░реЗрд░рд┐рдд, рдЕрд╕рд╛рдорд╛рдиреНрдп рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ: тАЬрдХреНрдпрд╛? рддреЛ рдпрд╣ рд╕рдВрднрд╡ рдерд╛? тАЭ
рдЯреНрд░рд┐рдХ # рейред рдирд┐рдпрдо рддреЛрдбрд╝рдирд╛
PHP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЬреЛ рдкрд╕рдВрдж рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рд░ рдХреЛрдИ рд╕реБрдкрд░-рд╕рд┐рдХреНрдпреЛрд░ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ рдЬрд┐рд╕реЗ "рд╕реАрд▓ рдХреНрд▓рд╛рд╕" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рдЬреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рдЬрд╛рджреВрдЧрд░ рдХреЗ рдЫрд╛рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдЗрд╕ рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓
рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдорд╛рдирдХ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рднрд╛рд╖рд╛ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред

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

рдпрд╣рд╛рдВ рд╣рдо рдХреНрд▓рд╛рд╕ рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рд╕реЗ
new static
рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

deserializing
рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рдЙрдиреНрдирдд рд╣реИред

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

рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЕрдкрдирд╛
instance
рдорд┐рд▓рддрд╛ рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд / рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдкреИрдХреЗрдЬ
рдЬрд╛рджреВ рдЕрдХреНрд╕рд░ рдПрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдврд╛рдВрдЪрд╛ рдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрди рдЬрд╛рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рд╕рд┐рджреНрдзрд╛рдВрдд / рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдореЗрдВ рдпрд╣ рд╕рдм рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
composer show doctrine/instantiator --all name : doctrine/instantiator descrip. : A small, lightweight utility to instantiate objects in PHP without invoking their constructors keywords : constructor, instantiate type : library license : MIT License (MIT)
рдЯреНрд░рд┐рдХ # 4 рд╕рдВрдкрддреНрддрд┐ рдХреА рдкрд╣реБрдВрдЪ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдирд╛
рдмрд╛рджрд▓ рдПрдХрддреНрд░рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ: рд╡рд░реНрдЧ рдЧреБрдкреНрдд рд╣реИ, рдЧреБрдг рдФрд░ рдирд┐рд░реНрдорд╛рддрд╛ рдирд┐рдЬреА рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдмреИрдХ рднреАред
class Secret { private $secret = 42; private function _construct() { echo 'Secret is: ', $this->secret; } private function onPropAccess(string $name) { echo "Accessing property {$name}"; return 100500; } }
рд╡рд┐рдЬрд╛рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░рд╛ рдХрд╛рдо, рдХрд┐рд╕реА рддрд░рд╣ рдХреЙрд▓рдмреИрдХ рдХрд░рдирд╛ рд╣реИред
рдЬрд╛рджреВ рдЬреЛрдбрд╝рдирд╛ ... рдкрд╛рдиреЗ рд╡рд╛рд▓рд╛
рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреБрдЯрдХреА рдЬрд╛рджреВ рдЬреЛрдбрд╝реЗрдВред

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

рдЕрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХреЙрд▓рдмреИрдХ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдЕрдВрджрд░ "рдкрд░реЗрд╢рд╛рди"
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд▓реЛрдЬрд░ рдмрдирд╛рдПрдВред рдХреНрд▓реЛрдЬрд░ рдХреЗ рдЕрдВрджрд░ рдЬреЛ рдХрдХреНрд╖рд╛ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реИ, рд╣рдо рдЗрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ
unset()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рддреЗ рд╣реИрдВред

unset
рдЖрдкрдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдЬрд╛рджреВ
get
рд╡рд┐рдзрд┐ рдХрд╣рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╣рдо рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдЬреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИ рдЬреЛ
echo
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдмрд╕ рдЗрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рд╕реБрд▓рдн рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ рд╣рдорд╛рд░рд╛ рдЧреБрдкреНрдд рд╡рд░реНрдЧ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдЯреВрдЯ рдЧрдпрд╛ред

рд╣рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛ рдХрд┐ рд╣рдо:
- рдкрдХрдбрд╝рд╛;
- рдХреБрдЫ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд▓реМрдЯрд╛ред
leedavis / altr-ego рдкреИрдХреЗрдЬ
рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЬрд╛рджреВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВред
рд╡реЗрджреА-рдЕрд╣рдВрдХрд╛рд░ рдкреИрдХреЗрдЬ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдШрдЯрдХ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
composer show leedavis81/altr-ego --all name : leedavis81/altr-ego descrip. : Access an objects protected / private properties and methods keywords : php, break scope versions : dev-master, v1.0.2, v1.0.1, v1.0.0 type : library license : MIT License (MIT)
рдЖрдк рдЕрдкрдиреА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдПрдХ рд╕реЗрдХреЗрдВрдб рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╡рд╣ рдЖрдЬреНрдЮрд╛рдХрд╛рд░реА рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдкрдХреА рд╕рднреА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ред
рдЯреНрд░рд┐рдХ # 5 PHP рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ
рдХреНрдпрд╛ PHP рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ рд╣реИрдВ? рд╣рд╛рдВ, рдФрд░ рдмрд╣реБрдд, рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХред
namespace Magic { $object = (object) [ "\0Secret\0property" => 'test' ]; var_dump($object); }
рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рд░рдгреА рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ
рд╡рд┐рд╢реЗрд╖ рдХреБрдВрдЬреА рд╣реЛрддреА рд╣реИ ред рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди
\0
рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рдХреИрд░реЗрдХреНрдЯрд░ рд╣реИ, рдФрд░
Secret
рдмрд╛рдж рд╣рдо
\0
рднреА рджреЗрдЦрддреЗ рд╣реИрдВред
рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ PHP рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рднреАрддрд░ рдПрдХ рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд░реИ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрд╕реА рдХреБрдВрдЬреА рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдкрд╛рд╕
stdClass
рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдореЗрдВ
Secret
рд╡рд░реНрдЧ рд╕реЗ рдПрдХ рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ
test
рдмрд░рд╛рдмрд░ рд╣реИред
object(stdClass) [1] private 'property' (Secret) => string 'test' (length=4)
рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ - рдлрд┐рд░ рдЖрдк рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╡рд╣рд╛рдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рдмрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдлреИрд╕рд▓реЗ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рднреА рдЬреНрдЮрд╛рди рдФрд░ рдЬрд╛рджреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рднреА рдЬрд╛рджреВ рдХреА рдЪрд╛рд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдПрдЪрдкреА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ - рдПрдХ рдбреАрдЯреАрдУ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ (рдкрд┐рдЫрд▓реА рдЪрд╛рд▓ рджреЗрдЦреЗрдВ)ред
рд╣рдо рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЬрдЧрд╣ рдореЗрдВ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╡рд╣рд╛рдВ рд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рд╕реЗ рджреБрд░реНрдЧрдо рд╣реЛрдВрдЧреЗ: рди рддреЛ
reflection
, рди рд╣реА рдмрдВрдж, рдФрд░ рди рд╣реА рдЕрдиреНрдп рдЬрд╛рджреВред рд▓реЗрдХрд┐рди рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рд╣реИ - рдХреНрдпрд╛ PHP рдореЗрдВ рдРрд╕реА рдХреЛрдИ рдЬрдЧрд╣ рд╣реИ рдЬреЛ рдХреБрдЫ рдЪрд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдЧреА рддрд╛рдХрд┐ рдХреЛрдИ рдЪрд╛рд▓рд╛рдХ рдпреБрд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд╣рд╛рдВ рди рдкрд╣реБрдВрдЪреЗ?
рд╣рдо рдПрдХ рдЬрд╛рджреВ рдкрджреНрдзрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдкрдврд╝ рд╕рдХреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд╛рджреВ
getters
, рдЬрд╛рджреВ рдХреА
isset
рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдЪрд▓реЛ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрдерд╛рди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
Global variables
рд░рджреНрдж Global variables
рджрд┐рдП рдЧрдП рд╣реИрдВ - рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
Public properties
рднреА рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред
Protected properties
рддреЛ рдРрд╕рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрдЪреНрдЪреЗ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд┐рд▓реЗрдЧрд╛ред
Private properties
ред рдХреЛрдИ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрдВрдж рд╣реЛрдиреЗ рдпрд╛ reflection
рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Private static properties
рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди reflection
рднреА рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЬрд╛рджреВ рдХреА рдмрд╛рдд рдереА -
Static variables in functions
- рдпреЗ рд╡реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╣реИрдВ рдЬреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдЕрдВрджрд░ рд╣реЛрддреЗ рд╣реИрдВред
рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рднрдВрдбрд╛рд░рдг
рдореИрдВрдиреЗ
рдирд┐рдХрд┐рддрд╛ рдкреЛрдкреЛрд╡ рдФрд░
рдЬреЗ рд╡реЙрдЯрдХрд┐рдВрд╕ рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдЪреИрдирд▓ рдкрд░ рдкреВрдЫрд╛ред

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

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

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

рд░рд╛рдЬреНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред

рд╣рдо рдЗрд╕ рд╕рдВрджрд░реНрдн рдХреЛ рдЬрд╛рджреВ рдХрд░рдиреЗ
getter
рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЙрд╕рдореЗрдВ рд╕реЗ рдмреБрд▓рд╛рддреЗ рд╣реИрдВред рдЕрдм рдХреЛрдИ рднреА рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕
Trait
рдЬреБрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рджред

рд╕рднреА рдЬрд╛рджреВ рдкрджреНрдзрддрд┐рдпрд╛рдВ рдЕрддрд┐рдкреНрд░рд╛рдкреНрдд рд╣реИрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВред

рд▓рд┐рд╕рд╛рдЪреЗрдВрдХреЛ / рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕рдм рдХреБрдЫ рддреБрд░рдВрдд рдФрдкрдЪрд╛рд░рд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
composer show /immutable-object --all name : /immutable-object descrip. : Immutable object library keywords : versions : * dev-master type : library license : MIT License (MIT)
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╣реБрдд рд╕рд░рд▓ рджрд┐рдЦрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреБрдг рд╣реИрдВ: рдирд┐рдЬреА, рд╕рдВрд░рдХреНрд╖рд┐рдд рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХред рд╣рдо
ImmutableTrait
рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдмрд╛рд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рджреЗрдЦреЗрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣рд╛рдВ рдмрдЪрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреАрдЯреАрдУ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред
object (MagicObject) [3] public 'value' => int 200
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ ...

... рддреЛ рддреБрд░рдВрдд рдПрдХ
fatal exception
рдорд┐рд▓рддрд╛
fatal exception
ред рд╣рдо рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИред рдРрд╕рд╛ рдХреИрд╕реЗ?

рдпрджрд┐ рдЖрдк рдПрдХ рд░реЛрдорд╛рдВрдЪрдХ рдЪреБрдиреМрддреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдорд┐рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ

рдпрд╣ рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ PHPStorm рдХреЗ рдЕрдВрджрд░ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рддреБрд░рдВрдд рдЖрдкрдХреЗ рдЖрджреЗрд╢ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рддреВрд▓ рджреЗрдВ - рдпрд╣ рдмрд╣реБрдд рдЦрддрд░рдирд╛рдХ рд╣реИред рд╡рд╣ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЧрд╛ рдХрд┐ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред
рдЯреНрд░рд┐рдХ # 6 рдзрд╛рдЧрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
рдбрд┐рдЬрд╛рдЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
include 'php://filter/read=string.toupper/resource=magic.php';
рдХреБрдЫ рдЬрд╛рджреБрдИ рд╣реИ: рдПрдХ PHP рдлрд╝рд┐рд▓реНрдЯрд░,
read
, рдЕрдВрдд рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЬрд╛рджреВред php
рдлрд╝рд╛рдЗрд▓ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧрддреА рд╣реИред
<?php echo 'Hello, world!'
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд╛рдорд▓рд╛ рдЕрд▓рдЧ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ "рдкреЙрдкреНрдпреБрд▓реЗрдЯ" рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:
HELLO, WORLD!
рдЙрд╕ рдХреНрд╖рдг рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛?
include
рдХрд░рдиреЗ рдореЗрдВ PHP рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рд╕рд╣рд┐рдд рдХрд┐рд╕реА рднреА рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЖрдк рдЗрд╕ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд╕рдм рдХреБрдЫ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ
final
рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЧреБрдг рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреБрдЫ рднреА рдЖрдк рдЗрд╕ рдЪреАрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░реИрдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдкрд╣рд▓реВ рдврд╛рдВрдЪреЗ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЗрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЬрдм рдЖрдкрдХрд╛ рд╡рд░реНрдЧ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
PHP рдореЗрдВ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рд╣реИред
var_dump(stream_get_filters()); array (size=10) 0 => string 'zlib.*' (length=6) 1 => string 'bzip2.*' (length=7) 2 => string 'convert.iconv.*' (length=15) 3 => string ' string.rotl3' (length=12) 4 => string 'string.toupper' (length=14) 5 => string 'string.tolower' (length=14) 6 => string 'string.strip_tags' (length=17) 7 => string 'convert.*' (length=9) 8 => string 'consumed' (length=8) 9 => string 'dechunk' (length=7)
рд╡реЗ рдЖрдкрдХреЛ рд╕рд╛рдордЧреНрд░реА рдХреЛ "рдЬрд╝рд┐рдк" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдКрдкрд░реА рдпрд╛ рдирд┐рдЪрд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЦреНрдп рдЪрд╛рд▓реЗрдВ рдЬреЛ рдореИрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЦрддреНрдо рд╣реЛ рдЧрдИ рд╣реИрдВред рдЪрд▓рд┐рдП рдЕрдм рдореИрдВ рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдВ - рдкрд╣рд▓реВ-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧред
рдЯреНрд░рд┐рдХ # 7 рдкрд╣рд▓реВ рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рдЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рд╕реЛрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрд╛ рдмреБрд░рд╛ рд╣реИред

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

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

рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рди рд╣реЛ (рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП) рдФрд░ рдЗрд╕рдореЗрдВ
security
рдирд╣реАрдВ рд╣реИред

рддрд╛рдХрд┐ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд╣рд┐рдд рд╕рднреА ...

... рдФрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ, ...

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

$invocation
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдпрд╣
reflection
рд╡рд┐рдзрд┐ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрд╡рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХ рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдЖрдЧреЗ, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ "рд╕рд▓рд╛рд╣" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреА рднрд╛рд╖рд╛ рдХрд╣рддреЗ рд╣реИрдВ: "рдкреНрд░рд┐рдп PHP, рдХреГрдкрдпрд╛ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╣рд░ рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рд╕реЗ
UserService
рд╡рд░реНрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
UserService
" рдмрд╕ рдПрдХ рдкрдВрдХреНрддрд┐, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреАред
рдкрд╣рд▓реВ рдмрдирд╛рдо рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛
рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реВ рдХреА рддреБрд▓рдирд╛ рдХреАред рд╕рд┐рдореНрдлрдиреА рдореЗрдВ рдХрдИ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╡реЗрдВрдЯ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреНрдпрд╛ рд╣реИред

рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ
AutorizationChecker
, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
AutorizationChecker
, рдФрд░ рдпрд╣ рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╣рд╛рдВ рдЖрд╡реЗрджрди рдХрд░рдирд╛ рд╣реИред рд╢реНрд░реЛрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
SubscrabingEvent
рдирд╛рдордХ рдПрдХ
SubscrabingEvent
, рдФрд░
Aspect
рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ
Aspect
рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрд╡рд╛ рд╕реЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред callback : - .
, .
, ,
Aspects
.

. ,
PHP- .

, . , , OPcache.
.
Composer
. Go! AOP,
Composer
, .

Aspects
,
Aspects
. .
.
PHP-Parser . , ,
. ,
,
PHP-Parser . .

. ,
goaop/parser-reflection .

AST- , . , , , .
.

, ,
Aspect
.

, .

, , . тАФ , - , .

, . , .
Aspect MOCK. ┬л┬╗, , . .
тАФ
joinPoint
. -
joinPoint
: , , .
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
.
OPcache preloading for AOP Core . AOP- . 10 . Bootstrapping , PHP.
FFI integration to modify binary opcodes . , , . PHP-opcodes,
.bin
. FFI .
Modifying PHP engine internal callbacks PHP- userland. PHP . FFI PHP userland, , , . .
, .
#8. goaop/framework
,
GitHub .
composer show goaop/framework --all name : goaop/framework descrip. : Framework for aspect-oriented programming in PHP. keywords : php, aop, library, aspect versions : dev-master, 3.0.x-dev, 2.x-dev, 2.3.1, тАж type : library license : MIT License
, PhpStorm.

, Pointcuts. , , . тАФ , , .
Trick #9.
. , .
: , - .
fastcgi_finish_request
. , , , - callback тАФ .
?
,
Deffered
, , .

Aspect
, , ,
Deffered
, .

Aspect
: , , , callback, , callback. .
React ,
promise
. , - , - , .
, .

shutdown_function
Aspect
. , callback, , , , callback
onPhpTerminate
.
fastcgi_finish_request
: ┬л, , , , ┬╗. .
,
sendPushNotification
.

, - тАФ 2 .

, , , 2 .
,
Deferred
.

, . - , , .
рд╡рд╣ рд╕рдм рд╣реИред , - . , .
PHP Russia 2020 . тАФ . telegram- , PHP Russia 2020.