PHP рдирд╛рдо рд╕реНрдерд╛рди

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


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

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

рдЕрдкрдиреЗ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ)
use 

рдЪреЗрддрд╛рд╡рдиреА: рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ php рд╣рд╛рд▓рдд рдмреНрд▓реЙрдХ рдФрд░ рд▓реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреАрд╡рд░реНрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ


рдЖрдЗрдП рддрд╕реНрд╡реАрд░реЛрдВ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
рдиреЛрдЯ: рдиреЗрдорд╕реНрдкреЗрд╕ рдХреАрд╡рд░реНрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рдПрдХрджрдо рдмрд╛рдж рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП <? php

рдПрдлрд╝рдкреА рдлрд╝рд╛рдЗрд▓
 <? php namespace A { class A { public static function say() { echo '   '; } } } 

B.php рдлрд╝рд╛рдЗрд▓
 <? php namespace B { class A { public static function say() { echo '   B'; } } } 

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдВрднрд╡ рд╣реИ:
 <? php namespace A; class A { public static function say() { echo '   '; } } 


рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕рдЦреНрддреА рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ!
рдЕрдм рддреАрд╕рд░реА рдлрд╛рдЗрд▓ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдХрд░реЗрдЧреА
index.php
 <? php require_once 'A.php'; require_once 'B.php'; use A\A; use B\A; 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдХреЛрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рдереЛрдбрд╝рд╛ рдФрд░ рдореИрдВ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрдВрдЧреАред
рдЕрдм рд╣рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдУрд░ рд░реБрдЦ рдХрд░рддреЗ рд╣реИрдВ
 <? php require_once 'A.php'; require_once 'B.php'; use A\A; use B\A; A\A::say(); B\A::say(); 

рдиреЛрдЯ: рд╕реНрдХреЛрдк рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП : (: :) php рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ ! рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реЗ рдЗрд╕реЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рддрдм рдЬреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реБрдИрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдкрддреНрд░ рдП рдХрд╛ рдирд┐рд░реНрдорд╛рдг :: рдП :: рдХрд╣рдирд╛ (); рдЕрдорд╛рдиреНрдп рд╣реИ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред

рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмреИрдХрд╕реНрд▓реИрд╢ рд╡рд░реНрдг "\" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдзреНрдпрд╛рди рджреЗрдВ: рдЧрд▓рддрдлрд╣рдореА рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдЪрд░рд┐рддреНрд░ рд╕реЗ рдмрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: '\\'


Namespaces рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдЕрдВрджрд░ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдЗрдП рд╣рдорд╛рд░реА A.php рдлрд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:
 <? php namespace A { class A { public static function say() { echo '   '; } } } namespace A\subA { class A { public static function say() { echo '   '; } } } 

рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 <? php require_once 'A.php'; require_once 'B.php'; use A\A as A; use B\A as B; use A\subA as sub A::say(); A::say(); sub::say(); 


рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдЖрдпрд╛рддрд┐рдд рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред рдЖрдк A \ subA рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ :: рдХрд╣рддреЗ рд╣реИрдВ (); рд╕рд╣рдордд рд╣реИрдВ, рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдкрд░ рдкреВрд░реНрдг рдкрде рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдПрд▓рд┐рдпрдВрд╕ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдирд╛рдо рдЙрдк рдХреЗ рдмрдЬрд╛рдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдЧрд╛, рдП \ рдЙрдк рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдХреЙрд▓ рдорд┐рд▓рддрд╛ рд╣реИ A \ subA :: say ();

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

рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдСрдЯреЛрд▓реЙрдб рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рдВрдЧрдарди рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдХреНрд╖рд╛рдПрдВ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдПрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдВрдЧреА, рдлрд┐рд░ рд╣рдорд╛рд░реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдХрдХреНрд╖рд╛рдПрдВ \ A \ A.php
рдХрдХреНрд╖рд╛рдПрдВ \ A \ рдЙрдк \ Aphp (рд╣рдо рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрдк-рд╕реНрдерд╛рди рд▓реЗрддреЗ рд╣реИрдВ)
рдХрдХреНрд╖рд╛рдПрдВ \ B \ B.php

Php рдореЗрдВ рдПрдХ рдЬрд╛рджреВ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИ __NAMESPACE__ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХрд╛ рдирд╛рдо рд╣реИред

рдФрд░ рдЕрдм рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред


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


 <?php namespace yourNameSpace { class Autoloader { const debug = 1; public function __construct(){} public static function autoload($file) { $file = str_replace('\\', '/', $file); $path = $_SERVER['DOCUMENT_ROOT'] . '/classes'; $filepath = $_SERVER['DOCUMENT_ROOT'] . '/classes/' . $file . '.php'; if (file_exists($filepath)) { if(Autoloader::debug) Autoloader::StPutFile((' ' .$filepath)); require_once($filepath); } else { $flag = true; if(Autoloader::debug) Autoloader::StPutFile(('  ')); Autoloader::recursive_autoload($file, $path, &$flag); } } public static function recursive_autoload($file, $path, $flag) { if (FALSE !== ($handle = opendir($path)) && $flag) { while (FAlSE !== ($dir = readdir($handle)) && $flag) { if (strpos($dir, '.') === FALSE) { $path2 = $path .'/' . $dir; $filepath = $path2 . '/' . $file . '.php'; if(Autoloader::debug) Autoloader::StPutFile(('  <b>' .$file .'</b> in ' .$filepath)); if (file_exists($filepath)) { if(Autoloader::debug) Autoloader::StPutFile((' ' .$filepath )); $flag = FALSE; require_once($filepath); break; } Autoloader::recursive_autoload($file, $path2, &$flag); } } closedir($handle); } } private static function StPutFile($data) { $dir = $_SERVER['DOCUMENT_ROOT'] .'/Log/Log.html'; $file = fopen($dir, 'a'); flock($file, LOCK_EX); fwrite($file, ('тХС' .$data .'=>' .date('dmY H:i:s') .'<br/>тХС<br/>' .PHP_EOL)); flock($file, LOCK_UN); fclose ($file); } } \spl_autoload_register('yourNameSpace\Autoloader::autoload'); } 

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

рдЕрдм рд╣рдорд╛рд░реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 <? php require_once 'Autoloader.php'; use Autoloader as Autoloader; use A\A as A; use B\A as B; use A\subA as sub A::say(); A::say(); sub::say(); 

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

рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛ рдХреА рдХреБрдЫ рдЧрддрд┐рд╢реАрд▓ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ:
test.php
 <? php namespace mySpace { class test { __construct() { //; } function sayName($name) { echo ' ' . $name; } static function sayOther() { echo ' '; } } } 


index.php
 <? php require_once 'Autoloader.php'; use Autoloader as Autoloader; use mySpace\test as test //,    $class = 'test'; //    $obj = new $class; $obj->sayName('test'); //   test\sayName('test2'); //  $obj::sayName('test'); //   test::sayName('test2'); 


рдЖрд╢рд╛ рд╣реИ рдореЗрд░рд╛ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

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


All Articles