PHP рддреНрд░реБрдЯрд┐рдпрд╛рдВ: рд╡рд░реНрдЧреАрдХрд░рдг, рдЙрджрд╛рд╣рд░рдг, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

рд▓реЗрдЦ рдЕрднреА рддрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ php рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдЧреАрдХрд░рдг, рдЙрдирдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдЧреАрдХрд░рдг, рдЙрдирдХреА рдШрдЯрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡, рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдЦ рдХреЛ рдЪрд╛рд░ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  1. рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдЧреАрдХрд░рдгред
  2. рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред
  3. рдЕрдкрдиреА рдЦреБрдж рдХреА рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ред
  4. рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХред

рддреНрд░реБрдЯрд┐ рд╡рд░реНрдЧреАрдХрд░рдг


рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдИ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд┐рдкрддреНрддрд┐:

Set_error_handler () рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдЕрд╡рд░реЛрдзрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛:

рд╕рд░реНрдЬрдХ:

рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд░реНрдЧреАрдХрд░рдг рдкрд╣рд▓реЗ рджреЛ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рддреНрд░реБрдЯрд┐ рдЙрджрд╛рд╣рд░рдг


рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╕реВрдЪрдХрд╛рдВрдХред рдПрдлрдкреАрдкреА
<?php //     error_reporting(E_ALL | E_STRICT); //     ini_set('display_errors', 'On'); //     require 'errors.php'; 

рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ
 <?php echo "  . <br>"; /* *   (  set_error_handler()) */ // NONFATAL - E_NOTICE // echo $undefined_var; // NONFATAL - E_WARNING // array_key_exists('key', NULL); // NONFATAL - E_DEPRECATED split('[/.-]', "12/21/2012"); // split() deprecated   php 5.3.0 // NONFATAL - E_STRICT // class c {function f(){}} c::f(); // NONFATAL - E_USER_DEPRECATED // trigger_error("E_USER_DEPRECATED", E_USER_DEPRECATED); // NONFATAL - E_USER_WARNING // trigger_error("E_USER_WARNING", E_USER_WARNING); // NONFATAL - E_USER_NOTICE // trigger_error("E_USER_NOTICE", E_USER_NOTICE); // FATAL,     set_error_handler - E_RECOVERABLE_ERROR // class b {function f(int $a){}} $b = new b; $b->f(NULL); // FATAL,     set_error_handler - E_USER_ERROR // trigger_error("E_USER_ERROR", E_USER_ERROR); /* *  (   set_error_handler()) */ // FATAL - E_ERROR // undefined_function(); // FATAL - E_PARSE // parse_error // FATAL - E_COMPILE_ERROR // $var[]; echo "  . <br>"; 

рдиреЛрдЯ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, PHP рд╕рдВрд╕реНрдХрд░рдг 5.3.0 рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИред

рддреНрд░реБрдЯрд┐рдпреЛрдВ.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рднрд╛рд╡ рд╣реИрдВред рдЕрдкрд╡рд╛рдж рдереЗ: E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_WARNING, Zend core рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рддред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ (рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдФрд░ error_reporting рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ :
рддреНрд░реБрдЯрд┐ рд╕рдореВрд╣рдирд┐рд░реНрджреЗрд╢ рдорд╛рди *рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ **
E_PARSE, E_COMPILE_ERROR ***display_errors = рдмрдВрдж
error_reporting = рдХреЛрдИ рднреА
500рдЦрд╛рд▓реА рдорд╛рди
display_errors = on
error_reporting = рдХреЛрдИ рднреА
200рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢
E_USER_ERROR, E_ERROR, E_RECOVERABLE_ERRORdisplay_errors = рдмрдВрдж
error_reporting = рдХреЛрдИ рднреА
500рддреНрд░реБрдЯрд┐ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ
display_errors = on
error_reporting = рдХреЛрдИ рднреА
200рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рддреНрд░реБрдЯрд┐ рд╕реЗ рдкрд╣рд▓реЗ
рдЧреИрд░ рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВdisplay_errors = рдмрдВрдж
error_reporting = рдХреЛрдИ рднреА
рдФрд░
display_errors = on
error_reporting = 0
200рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ
display_errors = on
error_reporting = E_ALL | E_STRICT
200рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдФрд░ рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ
* рдХреЛрдИ рднреА рдорддрд▓рдм E_ALL | E_STRICT рдпрд╛ 0ред
** рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдЙрддреНрддрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдЙрддреНрддрд░ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЖрдЙрдЯрдкреБрдЯред рдПрдлрдкреА рдлрд╝рд╛рдЗрд▓ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
*** рдпрджрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВред рддреНрд░реБрдЯрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ E_COMPILE_ERROR рдХреЛ "missing_file.php"; рд▓рд╛рдкрддрд╛_рдлрд╛рдЗрд▓.php "missing_file.php"; рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ "missing_file.php"; , рдлрд┐рд░ рддреНрд░реБрдЯрд┐ рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдореЗрдВ рдЖ рдЬрд╛рдПрдЧреАред

рдЙрдкрд░реЛрдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдореВрд▓реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  1. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЗрд╕реЗ "рдЕрдиреБрдкрдпреЛрдЧреА" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ (рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛), рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдЦрд╛рд▓реА рдорд╛рди рдпрд╛ рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЧрд╛, рдЬреЛ рдбрд┐рд╕реНрдкреНрд▓реЗ_рд░рд┐рдпрд░реНрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
  2. рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЬреЛ рдкрд╣рд▓реЗ рдЖрдЗрдЯрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреАред
  3. Display_errors = Off рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ 500 тАЛтАЛрдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдЧреАред
  4. рдЧреИрд░-рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдИ рдЙрдореНрдореАрдж рдХрд░реЗрдЧрд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░


рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐:

рдореИрдВ рддреАрд╕рд░реЗ рдмрд┐рдВрджреБ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдВрдЧрд╛: рдЬрд┐рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдордиреЗ register_shutdown_function () рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕реЗ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдЪрд╛рд╣реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг (рдШрд╛рддрдХ) рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреВрд░реА рд╣реБрдИ рдпрд╛ рдмрд╛рдзрд┐рдд рд╣реБрдИред рд╣рдо рддреНрд░реБрдЯрд┐_рдЧреЗрдЯ_рд╕реНрдЯрд▓ () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдереА, рддреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
рд╣рдо рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд index.php рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 <?php /** *   * @param int $errno   * @param string $errstr    * @param string $errfile  ,     * @param int $errline  ,     * @return boolean */ function error_handler($errno, $errstr, $errfile, $errline) { //      (   "@" error_reporting()  0) if (error_reporting() & $errno) { $errors = array( E_ERROR => 'E_ERROR', E_WARNING => 'E_WARNING', E_PARSE => 'E_PARSE', E_NOTICE => 'E_NOTICE', E_CORE_ERROR => 'E_CORE_ERROR', E_CORE_WARNING => 'E_CORE_WARNING', E_COMPILE_ERROR => 'E_COMPILE_ERROR', E_COMPILE_WARNING => 'E_COMPILE_WARNING', E_USER_ERROR => 'E_USER_ERROR', E_USER_WARNING => 'E_USER_WARNING', E_USER_NOTICE => 'E_USER_NOTICE', E_STRICT => 'E_STRICT', E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR', E_DEPRECATED => 'E_DEPRECATED', E_USER_DEPRECATED => 'E_USER_DEPRECATED', ); //      echo "<b>{$errors[$errno]}</b>[$errno] $errstr ($errfile  $errline )<br />\n"; } //      PHP return TRUE; } /** *     */ function fatal_error_handler() { //       if ($error = error_get_last() AND $error['type'] & ( E_ERROR | E_PARSE | E_COMPILE_ERROR | E_CORE_ERROR)) { //   (     ) ob_end_clean(); //    error_handler($error['type'], $error['message'], $error['file'], $error['line']); } else { //  ()     ob_end_flush(); } } //     error_reporting(E_ALL | E_STRICT); //     ini_set('display_errors', 'On'); //    (     ) ob_start(); //     set_error_handler("error_handler"); //  ,       (,   ) register_shutdown_function('fatal_error_handler'); require 'errors.php'; 

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

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

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


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


All Articles