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

рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВ 2009 рдореЗрдВ PHP 5.3 рдХреА рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рджреВрд╕рд░реЗ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЙрд╕ рд╕рдордп, рдЗрд╕рдХреЗ рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╕рдВрд╕реНрдХрд░рдг рел.реи рдореЗрдВ, рджреЗрд░ рд╕реЗ рд╕реНрдереИрддрд┐рдХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдирд╣реАрдВ рдереА рдФрд░ рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдирд╛рдо рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬреЛ рдореБрдЭреЗ рдХрдЯреНрдЯрд░-рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
PHP 5.4 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рдкреБрд░рд╛рдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рднрд╛рд╖рд╛ рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ - рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдореБрдЭреЗ рддрдм рд▓рдЧрддрд╛ рдерд╛ рдФрд░ рдЕрдм рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ - рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдгред
рдиреАрдЪреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгред
рдореИрдВ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
- рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рдкреАрдврд╝реА ред рдЖрдкрдХреЛ :: getInstance рдореЗрдердб рдХреЙрд▓ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реНрдкреИрд╡рд┐рдВрдЧ рдЕрдХреНрд╖рдо рд╣реИред рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдмрдЪреНрдЪреЗ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ :: рдЙрдкрдпреЛрдЧрдкреИрд░рдореЗрдЯреНрд░рд┐рдХрдЗрдиреНрд╕реНрдЯреЗрдВрдЯреЗрд╢рди рд╡рд┐рдзрд┐ред
- рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рд╕реЗ рдмрдЪреНрдЪреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ ред рдЖрдкрдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрд╛рд▓ рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рд╕реЗ рднреА рдЙрдирдХрд╛ рдирд╛рдо рдЬрд╛рдиреЗ рдмрд┐рдирд╛ред
- рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рдирд╛рдо рд╕реЗ рдПрдХ рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ ред рджреВрд╕рд░реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рд╕рдорд╛рди, рдХреЗрд╡рд▓ рдЕрдЧрд░ рдмрдЪреНрдЪрд╛ рдирд╣реАрдВ рдерд╛
* рдЯреНрд░рд┐рдЯ рдЯрд┐рдВрдЧрд▓рд┐рдВрдЧрдЯрдиред
* рд╕рд┐рдВрдЧрд▓рдЯрди рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
* /
рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд▓рдХреНрд╖рдг;
/ **
* рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдзрд╛рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ var array variableред
* /
$ рдСрдмреНрдЬреЗрдХреНрдЯрдкреВрд▓ = [];
рд▓рдХреНрд╖рдг TSingleton
{
/ **
* рдирдП рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВред
*
* рдлрд╛рдЗрдирд▓
* рдирд┐рдЬреА рддрдХ рдкрд╣реБрдВрдЪреЗрдВ
* рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп
* /
рдлрд╝рдВрдХреНрд╢рди __construct () {}
/ **
* рдХреНрд▓реЛрдирд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВред
*
* рдлрд╛рдЗрдирд▓
* рдирд┐рдЬреА рддрдХ рдкрд╣реБрдВрдЪреЗрдВ
* рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп
* /
рдирд┐рдЬреА рд╕рдорд╛рд░реЛрд╣ __clone () {}
/ **
* рдЬрдм рдХреНрд▓рд╛рд╕ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
*
* рдкрд╣реБрдБрдЪ рд╕рдВрд░рдХреНрд╖рд┐рдд
* рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп
* /
рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп onCreate () {}
/ **
* рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕реНрддрд░ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджрд┐рдирдЪрд░реНрдпрд╛ред
*
* рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп
* /
рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп init () {}
/ **
* рдпрджрд┐ рдмрд╛рд▓ рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рдорд╛рддрд╛-рдкрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореБрдЦреМрдЯрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рд╣реА рд╣реИред
*
* рдкрд░рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ $ рдмрд╛рд▓рдХ
* рдкрд░рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ $ рдкреЗрд░реЗрдВрдЯрдорд╛рд╕реНрдХ
* рдлрд╛рдЗрдирд▓
* рд╕реНрдерд┐рд░
* рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрдпреЛрдЧ
* рд╡рд╛рдкрд╕реА рдмреВрд▓рд┐рдпрди
* /
рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВParentClass ($ рдмрдЪреНрдЪрд╛, $ рдкреЗрд░реЗрдВрдЯрдорд╛рд╕реНрдХ)
{
$ currentClass = get_parent_class ($ рдмрдЪреНрдЪрд╛);
рдЕрдЧрд░ ($ currentClass)
рдЭреВрдареЗ рд▓реМрдЯрдирд╛;
рдХрд░рдирд╛
{
рдпрджрд┐ (рд╕реНрдЯреНрд░реИрдкреНрд╕ ($ currentClass, $ parentMask)! == рдЧрд▓рдд)
рд╕рдЪ рд▓реМрдЯрдирд╛;
}
рдЬрдмрдХрд┐ ($ currentClass = get_parent_class ($ currentClass));
рдЭреВрдареЗ рд▓реМрдЯрдирд╛;
}
/ **
* рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╡рд░реНрдЧ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдЪреНрдЪреЗ рдХреА рдХрдХреНрд╖рд╛ рдХрд╛ рд░рд┐рдЯрд░реНрди
* рдореБрдЦреМрдЯрд╛ рджреНрд╡рд╛рд░рд╛ред рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред
*
* рдкреИрд░рд╛рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ $ рдкреЗрд░реЗрдВрдЯрдорд╛рд╕реНрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рд╡рд░реНрдЧ рдирд╛рдо рдХрд╛ рдХреЛрдИ рднреА рд╡рд┐рдХрд▓реНрдкред
* рдлрд╛рдЗрдирд▓
* рд╕реНрдерд┐рд░
* рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрдпреЛрдЧ
* рд░рд┐рдЯрд░реНрди рдРрд░реЗ | рдирд▓ |
* /
рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди getObjectByParent ($ parentMask)
{
рд╡реИрд╢реНрд╡рд┐рдХ $ рдСрдмреНрдЬреЗрдХреНрдЯрдкреВрд▓;
foreach ($ рдСрдмреНрдЬреЗрдХреНрдЯ $ $ => $ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ)
рдЕрдЧрд░ (рд╕реНрд╡ :: hasParentClass ($ рд╡рд░реНрдЧ, $ parentMask))
рд╡рд╛рдкрд╕реА array_values тАЛтАЛ($ рдХрдВрдЯреЗрдирд░);
рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп;
}
/ **
* рдЗрд╕рдХреЗ (рдЙрдирдХреЗ) рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдирд╛рдо рдХреЗ рдирдХрд╛рдм рд╕реЗ рд╡рд╕реНрддреБ (рдУрдВ) рдХреЛ рдвреВрдБрдврддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ
* рдкрд╛рдпрд╛ рд╡рд┐рдзрд┐ рдпрд╣ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ред рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред
*
* рдкрд░рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ $ рдкреЗрд░реЗрдВрдЯрдорд╛рд╕реНрдХ
* рдкрд░рдо рд╕рд░рдгреА $ initArgs
* рдлрд╛рдЗрдирд▓
* рд╕реНрдерд┐рд░
* рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрдпреЛрдЧ
* рд░рд┐рдЯрд░реНрди рдРрд░реЗ | рдирд▓ |
* /
рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди getObjectByParentSafe ($ parentMask, $ initArgs = [])
{
$ рдмрдЪреНрдЪреЗ = рд╕реНрд╡рдпрдВ :: getObjectByParent ($ parentMask);
рдЕрдЧрд░ ($ рдмрдЪреНрдЪрд╛! == рдЕрд╢рдХреНрдд)
$ рдмрдЪреНрдЪреЗ рд╡рд╛рдкрд╕;
// рд╕рднреА рдШреЛрд╖рд┐рдд рд╡рд░реНрдЧреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред
$ рдкрд░рд┐рдгрд╛рдо = [];
foreach (get_declared_classes () $ class рдХреЗ рд░реВрдк рдореЗрдВ)
{
рдЕрдЧрд░ (рд╕реНрд╡ :: hasParentClass ($ рд╡рд░реНрдЧ, $ parentMask))
{
$ рдкрд░рд┐рдгрд╛рдо [] = call_user_func_array (($ рд╡рд░реНрдЧред ':: getInstance'), $ initArgs;
}
}
рд╡рд╛рдкрд╕реА рдХреА рдЧрд┐рдирддреА ($ рдкрд░рд┐рдгрд╛рдо)? $ рдкрд░рд┐рдгрд╛рдо: рдЕрд╢рдХреНрдд;
}
/ **
* рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╡рд░реНрдЧ рдХреА рдмрд╛рд▓ рд╡рд╕реНрддреБ (рдПрд╕) рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
*
* TSingleton рджреЗрдЦреЗрдВ :: getObjectByParent
* рдлрд╛рдЗрдирд▓
* рд╕реНрдерд┐рд░
* рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрдпреЛрдЧ
* рд░рд┐рдЯрд░реНрди рдРрд░реЗ | рдирд▓ |
* /
рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди getMyChild ()
{
рд╡рд╛рдкрд╕реА рд╕реНрд╡ :: getObjectByParent (get_called_class ());
}
/ **
* рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕реНрдХрд░рдг :: getMyChildред
*
* TSingleton рджреЗрдЦреЗрдВ :: getObjectByParentSafe
* рдлрд╛рдЗрдирд▓
* рд╕реНрдерд┐рд░
* рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрдпреЛрдЧ
* рд╡рд╛рдкрд╕реА рд╕рд░рдгреА
* /
рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди getMyChildSafe ()
{
$ initArgs = func_get_args ();
рд╕реНрд╡ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ :: getObjectByParent (get_called_class (), $ initArgs);
}
/ **
* рд╢реНрд░реЗрдгреА рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред
*
* рд╕реНрдерд┐рд░
* рдлрд╛рдЗрдирд▓
* рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрдпреЛрдЧ
* рдЯреАрдПрд╕рд▓рд┐рдВрдЧрдЯрди рд╡рд╛рдкрд╕
* /
рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди getInstance ()
{
рд╡реИрд╢реНрд╡рд┐рдХ $ рдСрдмреНрдЬреЗрдХреНрдЯрдкреВрд▓;
$ argsArray = func_get_args ();
$ рд╡рд░реНрдЧ = get_called_class ();
рдпрджрд┐ (рд╕реНрдереИрддрд┐рдХ :: рдЙрдкрдпреЛрдЧрдкрд░рд╛рдореЗрдЯреНрд░рд┐рдХрдЗрдиреНрд╕реНрдЯреЗрдВрдЯреЗрд╢рди () рдФрд░& рдЧрд┐рдирддреА ($ argsArray))
{
$ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ = '';
foreach ($ argsArray $ arg рдХреЗ рд░реВрдк рдореЗрдВ)
$ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯред = рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ ($ arg);
$ рдХреБрдВрдЬреА = md5 ($ рд╡рд░реНрдЧред $ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ);
}
рдФрд░ // рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
$ рдХреБрдВрдЬреА = $ рд╡рд░реНрдЧ;
рдЕрдЧрд░ (isset ($ objectPool [$ class]))
$ рдСрдмреНрдЬреЗрдХреНрдЯрдкреВрд▓ [$ рд╡рд░реНрдЧ] = []; // рдЗрдирд┐рдЯ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрдВрдЯреЗрдирд░ред
рдЕрдЧрд░ (isset ($ objectPool [$ class] [$ key]))
$ рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ [$ рд╡рд░реНрдЧ] [$ рдХреБрдВрдЬреА];
$ рдЙрджрд╛рд╣рд░рдг = рдирдпрд╛ $ рд╡рд░реНрдЧ ();
// рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкреВрд▓ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝реЗрдВред
$ рдСрдмреНрдЬреЗрдХреНрдЯрдкреВрд▓ [$ рд╡рд░реНрдЧ] [$ рдХреБрдВрдЬреА] = $ рдЙрджрд╛рд╣рд░рдг;
call_user_func_array ([$ рдЙрджрд╛рд╣рд░рдг, 'onCreate'], $ argsArray);
$ рдЙрджрд╛рд╣рд░рдг-> init ();
$ $ рд╡рд╛рдкрд╕реА;
}
/ **
* рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рд╢реНрд░реЗрдгреА рдХреЗ рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдоред
*
* рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрдпреЛрдЧ
* рд╕реНрдерд┐рд░
* рд╡рд╛рдкрд╕реА рдмреВрд▓рд┐рдпрди
* /
рд╕реНрдерд┐рд░ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
{
рдЭреВрдареЗ рд▓реМрдЯрдирд╛;
}
}
:
рд╕рднреА рдмрдирд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдм рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдЗрд╕ рдЪрд░ (рдХрд╛рд░реНрдпрд╢реАрд▓ рдЬрдирддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░) рдХрд╛ рджрд╛рдпрд░рд╛ рдЕрд╢реБрджреНрдзрддрд╛ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИред
рдЧреИрд░-рдорд╛рдирдХ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдкреИрдЯрд░реНрди рдХреЛ рдлрд╛рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЛ рдЕрдм рдПрдХ рдорд▓реНрдЯреАрдЯрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред