рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП
рдореБрд╕реНрддрдлрд╛ рдордЧрджреА рдХреЗ рд▓реЗрдЦ "
PHP рдкрд░рд╛рд╡рд░реНрддрди рдПрдкреАрдЖрдИ рдХрд╛ рдкрд░рд┐рдЪрдп " рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдБред
PHP рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдЬрдм рдореИрдВрдиреЗ PHP рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реБрд░реВ рдХреА, рддреЛ рдореБрдЭреЗ
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ред рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ, рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреИрдХреЗрдЬ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рддрдм рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБрдУрдВ рдкрд░
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
- рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХреНрдпрд╛ рд╣реИ?
- рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕
- рдХреЗ рдЙрдкрдпреЛрдЧ
- рдирд┐рд╖реНрдХрд░реНрд╖
- рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
1. рдкрд░рд╛рд╡рд░реНрддрди рдПрдкреАрдЖрдИ рдХреНрдпрд╛ рд╣реИ
рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ, рдкреНрд░рддрд┐рдмрд┐рдВрдм рдпрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм (рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдирд╛рдо, рдЕрдВрдЧреНрд░реЗрдЬреА рдкреНрд░рддрд┐рдмрд┐рдВрдм) рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЯреНрд░реИрдХ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред - рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ ред
рдЖрдкрдХреЗ рдХреЛрдб (
рд░рд┐рд╡рд░реНрд╕-рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ ) рдХреЗ рдЕрдВрджрд░ рд░реБрдХрдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ:
class Profile { public function getUserName(): string { return 'Foo'; } }
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд░реНрдЧ рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рд╣реИред
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ:
рдЗрд╕ рдкреНрд░рдХрд╛рд░,
ReflectionClass рд╣рдорд╛рд░реЗ
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИред
PHP рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдмрдВрдж рдмреЙрдХреНрд╕ рдХреА рдЪрд╛рдмреА рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд╛рдмреА рд╣реИ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд▓рд┐рдП:
ReflectionClass : рд░рд┐рдкреЛрд░реНрдЯ рд╡рд░реНрдЧ рдЬрд╛рдирдХрд╛рд░реАред
рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдлрдВрдХреНрд╢рди: рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдЬрд╛рдирдХрд╛рд░реАред
ReflectionParameter : рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
ReflectionClassConstant : рд░рд┐рдкреЛрд░реНрдЯ рд╡рд░реНрдЧ рдирд┐рд░рдВрддрд░ рдЬрд╛рдирдХрд╛рд░реАред
рдЖрдк рдкреВрд░реА рд╕реВрдЪреА
php.net рдкрд░ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
2. рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рднреА рд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ PHP рдХреЛрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред
3. рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдХрд┐ рд╣рдо
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЙрджрд╛рд╣рд░рдг 1:рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
рдЙрджрд╛рд╣рд░рдг 2:getUserName()
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
$method = new ReflectionMethod('Profile', 'getUserName'); var_dump($method->getDocComment()); => output: string(33) "/** * @return string */"
рдЙрджрд╛рд╣рд░рдг 3:рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ
instanceOf
рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
$class = new ReflectionClass('Profile'); $obj = new Profile(); var_dump($class->isInstance($obj));
рдЙрджрд╛рд╣рд░рдг 4:рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдк рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рд╕реЗ рдлрдВрд╕ рд╕рдХрддреЗ рд╣реИрдВ, "рдореИрдВ рдПрдХ рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?"
рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ, рдпрд╣рд╛рдБ рдЪрд╛рд▓ рд╣реИ:
рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ
рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк
рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди рдЬрдирд░реЗрдЯрд░ : рд▓реИрд╡реЗрд░реЗрд▓-рдПрдкрд┐рдбреЛрдХ-рдЬрдирд░реЗрдЯрд░ рдкреИрдХреЗрдЬ рд░рд┐рдлреНрд▓реЗрдХреНрд╢рдирдХреНрд▓рд╛рд╕ рдФрд░ рд░рд┐рдлрд╝реНрд▓реЗрдХреНрд╢рди рдореИрдереЛрдб рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрди рдХреЛрдб рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
- рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрдВрдЯреЗрдирд░ : рдЖрдк рдпрд╣рд╛рдВ рдкреВрд░реЗ рд╡рд┐рд╖рдп рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
4. рдирд┐рд╖реНрдХрд░реНрд╖
PHP рдПрдХ рдкреВрд░реНрдг
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ OOP рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
5. рд╕рдиреНрджрд░реНрдн
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ:рдЖрдк рд╕реНрдЯрдм рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХреЛрдбрдкреНрд╢рди рдкреИрдХреЗрдЬ рдореЗрдВ рдкрд░рд╛рд╡рд░реНрддрди рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рд╡рд░реНрдЧ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдбреБрдмрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдпрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред