рд╕рдорд╛рдЪрд╛рд░ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рддрд╛рдЬрд╛ рдЪрдпрдиред рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ: PHP 8 рд░рд┐рд▓реАрдЬрд╝ рд╢реЗрдбреНрдпреВрд▓, PHP рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкреАрдПрдЪрдкреА рдЗрдВрдЯрд░рдиреИрд╢рдирд▓ рд╕реЗ 5 рддрд╛рдЬрд╝рд╛ рдЖрд░рдПрдлрд╕реА, рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг, рд╡реАрдбрд┐рдпреЛ, рдкреЙрдбрдХрд╛рд╕реНрдЯ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдкрдврд╝рдиреЗ рдХрд╛ рдордЬрд╝рд╛ рд▓реЗрдВ!
PHP рдХреЗ рдЖрдВрддрд░рд┐рдХ
- рдкреНрд░рдХрд╛рд╢рд┐рдд PHP рд░рд┐рд▓реАрдЬрд╝ рд╢реЗрдбреНрдпреВрд▓ 8 - рдкрд╣рд▓рд╛ рдЕрд▓реНрдлрд╛ 18 рдЬреВрди рдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬрд╝ 3 рджрд┐рд╕рдВрдмрд░ рдХреЛред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА ред
- [RFC] Constructor Property Promotion тАФ PHP, , 3 RFC: Constructor Promotion, Named parameters, Compound Property Visibility (
{public get, private set}
).
, RFC :
class Point {
public float $x;
public float $y;
public float $z;
public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
}
:
class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0
) {}
}
- [RFC] Allow trailing comma in parameter list тАФ , . PHP 7.3.
class Uri {
private function __construct(
?string $scheme,
?string $user,
?string $pass,
?string $host,
?int $port,
string $path,
?string $query,
?string $fragment // <-- ARGH!
) {
...
}
}
- [RFC] Stricter type checks for arithmetic/bitwise operators тАФ RFC TypeError, , .
var_dump([] % [42]);
- [RFC] Switch expression тАФ
switch
, :
$expressionResult = switch ($condition) {
1 => foo(),
2 => bar(),
3, 4, 5 => baz(),
};
RFC case
: case 3, 4, 5: break;
case 3: case 4: case 5: break;
. - [RFC] Type casting in array destructuring expressions тАФ :
[(int) $now, (int) $future] = ["2020", "2021"];
[$now, $future] = ["2020", "2021"];
$now = (int) $now;
$future = (int) $future;
, :
...[int $i] = ['a' => '123'];
function foo(...[int $i]) {
}
foo(['a' => '234']);
:
$var = (Foo) [
'a' => 123,
'b' => (Bar) [
'c' =>
],
];
- : Server-Side Request and Response Objects, Userspace operator overloading, Write-Once (readonly) Properties.

Symfony
Laravel
Yii

/
рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!
рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЧрд▓рддреА рдпрд╛ рдЕрд╢реБрджреНрдзрд┐ рджрд┐рдЦрддреА рд╣реИ - рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдкреАрдПрдо рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ ред
рдкреНрд░рд╢реНрди рдФрд░ рд╕реБрдЭрд╛рд╡ рдореЗрд▓ рдпрд╛ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ ред PHP рдбрд╛рдЗрдЬреЗрд╕реНрдЯ
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ рдкрд░ рдЕрдзрд┐рдХ рд╕рдорд╛рдЪрд╛рд░ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ ред рд╕рдВрджреЗрд╢ рд▓рд┐рдВрдХ рд╕рднреА рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд▓рд┐рдВрдХ
тЖР рдкреАрдПрдЪрдкреА рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдирдВ 176: рдкрд┐рдЫрд▓рд╛ рд░рд┐рд▓реАрдЬ