PHP 7.4 рдореЗрдВ рдирдпрд╛

рд╣рд╛рд▓рд╛рдВрдХрд┐ PHP рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдорд╛рдореВрд▓реА рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдирдП рд▓рд╛рддрд╛ рд╣реИ, рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐ рдХреЗ рдмрд┐рдирд╛, рднрд╛рд╖рд╛ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╢рд╛рдВрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рджреЛрдиреЛрдВред рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдЕрдВрддрд┐рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрджрд▓рд╛рд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд░рд┐рд▓реАрдЬ рджрд┐рд╕рдВрдмрд░ 2019 рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред



рдЖрдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкрд░рд┐рд╡рд░реНрддрди:

  • рдЯрд╛рдЗрдк рдХреНрд▓рд╛рд╕ рдЧреБрдг
  • рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░реАрд▓реЛрдб рдХрд░реЗрдВ
  • рд▓рдШреБ рд▓реЗрдЦрди рдЧреБрдордирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреАрд░ рдХрд╛рд░реНрдп
  • рдЕрд╢рдХреНрдд рдХреЗ рд╕рд╛рде рд╕рдВрдШ рд╕рдВрдЪрд╛рд▓рдХ рдХреЛ рд╕реМрдВрдкрдирд╛ (?? =)
  • рд╡рд┐рд░рд╛рд╕рдд рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ / рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА
  • рдПрдХ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛ PHP рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдИ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ
  • рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдирдкреИрдХрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░

рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЗрди рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

рдЕрд╕реНрд╡реАрдХрд░рдг: рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЪрд░реНрдЪрд╛ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдмреНрд░реЗрдВрдЯ рдХреЗ рд▓реЗрдЦ " PHP 7.4 рдореЗрдВ рдирдпрд╛ " рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдПрдХ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдкрд╛рда рдореЗрдВ рд╕рднреА рдирд╡реАрдирддрдо рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд▓реЗрдЦ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдмрдЬрд╛рдп рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ ( RFC )


рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЖрдкрдХреЛ рдЧреБрдордирд╛рдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:

array_map(function (User $user) {    return $user->id; }, $users) array_map(fn(User $user) => $user->id, $users) 

рддреАрд░ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • рд╡реЗ parent рдХреНрд╖реЗрддреНрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • $this рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ, рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВред
  • рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдПрдХ рд░рд┐рдЯрд░реНрди рдСрдкрд░реЗрдЯрд░ рднреА рд╣реИред

рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдЧреБрдг ( RFC )


рд╣реБрд░реНрд░реЗ! рд╡рд░реНрдЧ рдЧреБрдг рдЕрдм рдкреНрд░рдХрд╛рд░ рд╕рдВрдХреЗрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ PHP рдХреЗ рдмрд╛рдж рд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реИрдВред рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХрд╛рд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдХреЗрд╡рд▓ void рдФрд░ callable. рдХреЛ рдЫреЛрдбрд╝рдХрд░ callable.

 class Bar {   public string $name;   public ?int $amount;   public Foo $foo; } 

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

Null join рдСрдкрд░реЗрдЯрд░ ( RFC ) рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ


рдЗрддрдиреА рд▓рдВрдмреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдмрдЬрд╛рдп:

 $data['date'] = $data['date'] ?? new DateTime(); 

рдЕрдм рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛:

 $data['date'] ??= new DateTime(); 

рдРрд░реЗ рдЕрдирдкреИрдХрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ ( RFC )


рдЕрдм рдЖрдк рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдирдкреИрдХ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $arrayA = [1, 2, 3]; $arrayB = [4, 5]; $result = [0, ...$arrayA, ...$arrayB, 6 ,7]; <i>// [0, 1, 2, 3, 4, 5, 6, 7]</i> 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЧреИрд░-рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ( RFC )


рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (FFI) рдЖрдкрдХреЛ PHP рдХреЛрдб рдореЗрдВ рд╕реАрдзреЗ C рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╢реБрджреНрдз PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп рд╣реИред рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрднреА рднреА C рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░реАрд▓реЛрдб ( RFC )


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

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

рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ "рдореБрдХреНрдд рдирд╣реАрдВ рд╣реИ" - рдпрджрд┐ рдкреНрд░реАрд▓реЛрдбреЗрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╡рд┐рд░рд╛рд╕рдд рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ ( RFC ) рдореЗрдВ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ / рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА


рд╡рд░реНрддрдорд╛рди рдореЗрдВ, PHP рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЖрдкрдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЙрд╕рдХреЗ рдХрд┐рд╕реА рд╕реБрдкрд░рдЯреЗрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рд▓реМрдЯреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрд╕рдХреЗ рдЙрдкрдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдмрд╛рд░рдмрд░рд╛ рд▓рд┐рд╕реНрдХреЙрд╡ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЕрдзрд┐рдХ рд╕рдЦреНрддреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдПрдХ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 interface Factory {   function make(): object; } class UserFactory implements Factory {   function make(): User; } 

рдФрд░ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рддрд░реНрдХ:

 interface Concatable {   function concat(Iterator $input); } class Collection implements Concatable {   function concat(iterable $input) {/* . . . */} } 

рдХрд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди ( RFC )


рджреЛ рдирдП рдЬрд╛рджреВ рдХреЗ рддрд░реАрдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: __serialize рдФрд░ __unserialize ред рдпрд╣ рдХреНрд░рдорд╛рдВрдХрди рддрдВрддреНрд░ __sleep/__wakeup рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде Serializable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЙрдирдХреЗ рдорддрднреЗрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг RFC рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрдмрдВрдз рдкреНрд░рд╛рдердорд┐рдХрддрд╛ ( RFC )


рдЕрдЧрд░ рдЖрдкрдиреЗ рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реИ:

 echo "sum: " . $a + $b; 

PHP рдЕрдм рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдЧрд╛:

 echo ("sum: " . $a) + $b; 

PHP 8 рдЗрд╕рдХреА рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдЧрд╛:

 echo "sum :" . ($a + $b); 

рдЬрдм рдпрд╣ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ PHP 7.4 рдПрдХ рдЕрдкреНрд░рдЪрд▓рди рдЪреЗрддрд╛рд╡рдиреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ "ред" "+" рдпрд╛ "-" рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдХреЛрд╖реНрдардХ рд╕реЗ рдШрд┐рд░рд╛ рдирд╣реАрдВред

__toString ( RFC ) рдЕрдкрд╡рд╛рдж рд╕рдорд░реНрдерди


рдкрд╣рд▓реЗ, рдЕрдкрд╡рд╛рдж __toString рдЬрд╛рджреВ рдкрджреНрдзрддрд┐ рд╕реЗ рдирд╣реАрдВ рдлреЗрдВрдХреЗ рдЬрд╛ рд╕рдХрддреЗ рдереЗред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрд╡рд╛рдж "рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ RFC рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдСрдбрд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдЕрдм рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд▓рд┐рдВрдХ рдкрд░рд╛рд╡рд░реНрддрди ( RFC )


рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдЬреИрд╕реЗ symfony/var-dumper , рдЪрд░реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ReflectionAPI рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ, рд▓рд┐рдВрдХ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдЪрд┐рдд рд╕рдорд░реНрдерди рдирд╣реАрдВ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ред PHP 7.4 рдПрдХ ReflectionReference рд╡рд░реНрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ mb_str_split ( RFC ) рд╡рд┐рдзрд┐


рдпрд╣ рдлрд╝рдВрдХреНрд╢рди str_split рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд▓реНрдЯреАрдмрд╛рдЗрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧреНрд╕ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдПред

рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз ext-hash рдПрдХреНрд╕рдЯреЗрдВрд╢рди ( RFC )


рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЕрдм рд╕рднреА PHP рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

PEAR рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ ( рдЙрджрд╛рд╣рд░рдг )


PEAR рдЕрдм рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреЛрд░ рдЯреАрдо рдиреЗ PHP 7.4 рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд░рдЬрд┐рд╕реНрдЯреНрд░реА ( RFC )


рдПрдХ рдирдпрд╛ password_algos рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рднреА рдкрдВрдЬреАрдХреГрдд рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред

рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ ( RFC )


рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдРрд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╡рд╕реНрддреБ рдХреЗ рд╡рд┐рдирд╛рд╢ рдХреЛ рдирд╣реАрдВ рд░реЛрдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рдХреИрд╢ рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред

рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд╕реАрдорд╛рдВрдХрдХ ( RFC )


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

 1_000_000_000 // int 6.674_083e-11; // float 299_792_458;   // decimal 0xCAFE_F00D;  // hexadecimal 0b0101_1111;   // binary 0137_041;      // octal 

рд╢реЙрд░реНрдЯ рдУрдкрди рдЯреИрдЧ рдбрд┐рдкреНрд░реЗрд╕реНрдб ( RFC )


рд▓рдШреБ рдЙрджреНрдШрд╛рдЯрди рдЯреИрдЧ <? рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ PHP 8 рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЯреИрдЧ <?= (echo) рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реБрдЖ <?= (echo) ред

рд╡рд╛рдо рд╕рд╣рдпреЛрдЧреА рд╕рд╣рдХрд╛рд░реА рд╕рдВрдЪрд╛рд▓рдХ рдЕрд╕реНрд╡реАрдХреГрдд ( RFC )


рдЯрд░реНрдирд┐рд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ PHP рдореЗрдВ рдХреБрдЫ рдЕрдЬреАрдм рд╡рд┐рдЪрд┐рддреНрд░рддрд╛рдПрдБ рд╣реИрдВред рдпрд╣ RFC рдиреЗрд╕реНрдЯрд░реНрдб рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

 1 ? 2 : 3 ? 4 : 5;   // deprecated (1 ? 2 : 3) ? 4 : 5; // ok 

PHP 8 рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдВрдХрд▓рди-рд╕реНрддрд░реАрдп рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред

рдкрд┐рдЫрдбрд╝реЗ рдЕрд╕рдВрдЧрдд рдкрд░рд┐рд╡рд░реНрддрди ( UPGRADING )


рдпрд╣рд╛рдБ рдХреБрдЫ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд┐рдЫрдбрд╝реЗ рдЕрд╕рдВрдЧрдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ:

  • parent:: рд▓рд┐рдП рдПрдХ рдХреЙрд▓ parent:: рдмрд┐рдирд╛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдкрджрд╛рд╡рдирдд
  • DateTime рдпрд╛ DateTimeImmutable рдЙрджрд╛рд╣рд░рдг рдкрд░ var_dump рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЕрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдг рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  • openssl_random_pseudo_bytes OpenSSL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ред рдкрд╣рд▓реЗ, рдпрд╣ рдЭреВрдард╛ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдкреАрдврд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИред
  • рдПрдХ PDO рдпрд╛ рдПрдХ PDOStatement рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ PDOStatement рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ PDOException рдмрдЬрд╛рдп рдПрдХ Exception рдлреЗрдВрдХрддрд╛ рд╣реИред
  • ArrayObject рдЙрджрд╛рд╣рд░рдг рдкрд░ get_object_vars() рдХреЙрд▓ рдХрд░рдирд╛ get_object_vars() рдХреЗ рдЧреБрдгреЛрдВ ArrayObject рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ ArrayObject , рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╕рд░рдгреА рдХрд╛ рдорд╛рди рдирд╣реАрдВред рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╕рд░рдгреА рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, array рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП ArrayObject рдХрд░реЗрдВред

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


All Articles