рдЕрдирдЬрд╛рдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ PHP 5.4 рдФрд░ рдХрд╛рд░реНрдп рдЕрддрд┐рднрд╛рд░рд┐рдд

рдХреИрд╕рд╛ рдерд╛

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

рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ 5.3 рдФрд░ 5.4 рдХреЗ рдмреАрдЪ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдореИрдВрдиреЗ php 5.4 рд░рд┐рд▓реАрдЬ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЗрд╕ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ Google рдкрд░ рдЕрддреНрдпрд╛рдЪрд╛рд░ рдХрд░рдиреЗ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди Google рд╕реНрдкрд╖реНрдЯ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рд╕рдХрд╛ред рдореБрдЭреЗ рдЬреЛ рдХреБрдЫ рдорд┐рд▓рд╛, рд╡рд╣ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛, рдЕрдм рдФрд░ рдирд╣реАрдВред рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдЕрдЪреНрдЫрд╛, рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░реЗрдВ?

рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдЗрдЪреНрдЫрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдЯ-рдЗрди рд░реЗрдВрдЬ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
<?php // MyClass.php namespace MyNamespace; class MyClass { public function makeMeRange() { return range(1,3); } } 


рдФрд░ рдЗрд╕реА рдирд╛рдо рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓:
 <?php // MyNamespaceFunctions.php namespace MyNamespace; function range($low, $high, $step = null) { return 'Overridden'; } 


рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЕрдЧрд░ рд╣рдо MyClass рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд░реНрдЧ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛:
 <?php // main.php include_once("MyClass.php"); include_once("MyNamespaceFunctions.php"); use MyNamespace\MyClass; $my_obj = new MyClass(); echo $my_obj->makeMeRange(); 


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ:
 $ php54 main.php Overridden 

 $ php53 main.php Overridden 


рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк MyClass рдХрд╛ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ?
 <?php include_once("MyClass.php"); use MyNamespace\MyClass; $my_obj = new MyClass(); include_once("MyNamespaceFunctions.php"); $other_obj = new MyClass(); echo $my_obj->makeMeRange(); 


рдлрд┐рд░ рднреА рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ:
 $ php54 main.php Overridden 

 $ php53 main.php Overridden 


рджреЛ-рд╕рд╛рдордирд╛ рд╡рд╛рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдЦреЛрдЬрдиреЗ рдХрд╛ рдЕрдВрддрд┐рдо рдореМрдХрд╛ рд░рд╣рддрд╛ рд╣реИ - рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
 <?php include_once("MyClass.php"); use MyNamespace\MyClass; $my_obj = new MyClass(); $my_obj->makeMeRange(); include_once("MyNamespaceFunctions.php"); $other_obj = new MyClass(); echo $other_obj->makeMeRange(); 


рдЕрд╣рд╛! рдкрдХрдбрд╝ рд▓рд┐рдпрд╛!
 $ php54 main.php PHP Notice: Array to string conversion in /Volumes/Projects/php-experiments/ тАж 

 $ php53 main.php Overridden 


рдФрд░ рдЕрдВрддрд┐рдо-рдЕрдВрддрд┐рдо рдкреНрд░рдпреЛрдЧ (рдореИрдВ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ):
 <?php include_once("MyClass.php"); use MyNamespace\MyClass; $my_obj = new MyClass(); $my_obj->makeMeRange(); include_once("MyNamespaceFunctions.php"); echo $my_obj->makeMeRange(); 


5.3 рдФрд░ 5.4 рдХреЗ рдмреАрдЪ рдлрд╝рдВрдХреНрд╢рди рдЕрдзрд┐рднрд╛рд░ рдореЗрдВ рдЕрдВрддрд░ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ:
 $ php54 main.php PHP Notice: Array to string conversion in /Volumes/Projects/php-experiments/ тАж 

 $ php53 main.php Overridden 


рдЕрдВрдд рдореЗрдВ

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

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

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

PSS: рдФрд░ Bugs.php.net рдкрд░ рдЦреБрд▓реЗ рдЯрд┐рдХрдЯ # 63201 рднреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рднрд╛рдЧреАрджрд╛рд░реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

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


All Articles