PHP 7.4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖реЗрдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рдПрдХрд╛ рд╡рд░реНрд╖рд╛рдирдВрддрд░ рд╕рд╛рджрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдкреНрд░рдХрд╛рд╢рди рдХреГрдкрдпрд╛ PHP 7.4. рдирд╡реАрди рд╢рд╛рдЦреЗрдд рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪреА рдорд╛рд▓рд┐рдХрд╛, рддрд╕реЗрдЪ рд╕реБрд╕рдВрдЧрддрддрд╛ рдЦрдВрдбрд┐рдд рдХрд░рдгрд╛рд░реЗ рдЕрдиреЗрдХ рдмрджрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд.

рдХрд│ рд╕реБрдзрд╛рд░рдгрд╛ PHP 7.4 рдордзреНрдпреЗ:

  • рдЯрд╛рдЗрдк рдХреЗрд▓реЗрд▓реЗ рдЧреБрдгрдзрд░реНрдо - рд╡рд░реНрдЧ рдЧреБрдгрдзрд░реНрдо рдЖрддрд╛ рдкреНрд░рдХрд╛рд░ рдШреЛрд╖рдгрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛рдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

    рд╡рд░реНрдЧ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ {
    рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ int $id;
    рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ $name;
    }

  • рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдореВрд▓реНрдпрд╛рдиреБрд╕рд╛рд░ рд╕реНрдХреЛрдк рдмрд╛рдЗрдВрдбрд┐рдВрдЧрд╕рд╣ "fn(parameter_list) => expr" рдлрдВрдХреНрд╢рдиреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдХреНрдпрд░рдЪрдирд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, тАЬfn($x) => $x + $yтАЭ рд╣реЗ тАЬ$fn2 = рдлрдВрдХреНрд╢рди ($x) рд╡рд╛рдкрд░ ($y) {return $x + $y;}тАЭ рдЪреНрдпрд╛ рд╕рдорд╛рди рдЖрд╣реЗ;
  • рд╢реЙрд░реНрдЯрд╣рдБрдб рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ "??=" рдЬреЗ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ ("a ??= b" рд╣реЗ "a = a ?? b" рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ, рдЬрд░ "a" рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЕрд╕реЗрд▓ рддрд░ рддреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ рдЖрдгрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдирд╛рд╣реА рддрд░ "b" рдореВрд▓реНрдп рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЖрд╣реЗ );
  • рдорд░реНрдпрд╛рджрд┐рдд рд╕рдВрдзреА рд╡реНрдпреБрддреНрдкрдиреНрди рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░рд╛рддреАрд▓ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреЗ рд╡рд╛рд░рд╕рд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдЬрддрди рдХрд░рдгреЗ, рдХрд┐рдВрд╡рд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдпреБрдХреНрддрд┐рд╡рд╛рдж рдкреНрд░рдХрд╛рд░рд╛рдВрдордзреНрдпреЗ рдореВрд│ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдЙрд▓рдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ (рд╕рд╣рдкреНрд░рд╕рд░рдг рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдкреНрд░рдХрд╛рд░ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕). рдЦрд╛рд▓реАрд▓ рд░рдЪрдирд╛ рдЖрддрд╛ PHP рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд:

    рд╡рд░реНрдЧ рдЕ {}
    рд╡рд░реНрдЧ рдмреА A {} рд╡рд╛рдврд╡рддреЛ

    рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рддрд╛ {
    рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдп рдкрджреНрдзрдд(): A {}
    }
    рдХреНрд▓рд╛рд╕ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрдбреНрдпреВрд╕рд░рдиреЗ рдкреНрд░реЛрдбреНрдпреВрд╕рд░рдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗрд▓рд╛ {
    рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдп рдкрджреНрдзрдд(): B {}
    }

  • рдЕтАНреЕрд░реЗрдордзреНрдпреЗ рдСрдкрд░реЗрдЯрд░ рдЕрдирдкреЕрдХ рдХрд░рдд рдЖрд╣реЗ тАЬтАж$varтАЭ, рдкрд░рд╡рд╛рдирдЧреА рджреЗрдгреЗ рдирд╡реАрди рдЕреЕрд░реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛рдирд╛ рд╡рд┐рджреНрдпрдорд╛рди рдЕреЕрд░реЗ рдмрджрд▓рд╛;

    $parts = ['рд╕рдлрд░рдЪрдВрдж', 'рдирд╛рд╢рдкрд╛рддреА'];
    $fruits = ['рдХреЗрд│реА', 'рд╕рдВрддреНрд░рд╛', ...$рднрд╛рдЧ, 'рдЯрд░рдмреВрдЬ'];
    // ['рдХреЗрд│реА', 'рд╕рдВрддреНрд░рд╛', 'рд╕рдлрд░рдЪрдВрдж', 'рдирд╛рд╢рдкрд╛рддреА', 'рдЯрд░рдмреВрдЬ'];

  • рд╕рдВрдзреА рдЕрдВрдХреАрдп рдЕрдХреНрд╖рд░рд╛рдВрдордзреНрдпреЗ рд╕реАрдорд╛рдВрдХрдХрд╛рдВрд╕рд╣ рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдЪреЗ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ (1_000_000_00);
  • рдЖрдзрд╛рд░ рдХрдордХреБрд╡рдд рджреБрд╡реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рд╕рдВрджрд░реНрдн рдареЗрд╡рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд, рдкрд░рдВрддреБ рд╕рдВрдмрдВрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдЯрд╡рдгреНрдпрд╛рдкрд╛рд╕реВрди рдХрдЪрд░рд╛ рдЧреЛрд│рд╛ рдХрд░рдгрд╛рд▒реНрдпрд╛рд▓рд╛ рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░реВ рдирдХрд╛;
  • рдирд╡реАрди рдпрдВрддреНрд░рдгрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реАрд░рд┐рдЕрд▓рд╛рдпрдЭреЗрд╢рди (рд╕рд┐рд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЖрдгрд┐ __sleep()/__wakeup() рдЪреЗ рд╕рдВрдпреЛрдЬрди), рдЬреНрдпрд╛рдиреЗ рд╕рд┐рд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдмрджрд▓рд▓рд╛, рдЬреЛ рдирд╛рдкрд╕рдВрдд рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓;

    // рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рд╕рд░реНрд╡ рдЕрд╡рд╕реНрдерд╛ рдЕрд╕рд▓реЗрд▓рд╛ рдЕреЕрд░реЗ рдкрд░рдд рдХрд░рддреЛ;
    рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдп __serialize(): рдЕреЕрд░реЗ;

    // рдЕреЕрд░реЗрдордзреВрди рдСрдмреНрдЬреЗрдХреНрдЯрдЪреА рд╕реНрдерд┐рддреА рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рддреЗ
    рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдп __рдЕрдирд╕рд┐рд░рд┐рдпрд▓рд╛рдЗрдЭ(рдЕреЕрд░реЗ $рдбреЗрдЯрд╛): рд╢реВрдиреНрдп;

  • рдкрджреНрдзрддреАрдордзреВрди рдЕрдкрд╡рд╛рдж рдлреЗрдХрдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рдЖрд╣реЗ __toString();
  • рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛрдб рдХреЕрд╢реЗ рдкреНрд░реАрд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. рд╕реЗрдЯрд┐рдВрдЧрд╕рд╛рдареА рдкреЕрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд▓реЗ
    opcache.preload, рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рддреБрдореНрд╣реА PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛ рдЬреА рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реА рдЬрд╛рдИрд▓ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рд╕реБрд░реВ рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рдЪрд╛рд▓рд╡рд┐рд▓реА рдЬрд╛рдИрд▓. рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрддрд░ рдлрд╛рдИрд▓реНрд╕рдЪрд╛ opcode рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдереЗрдЯ рд╕рдорд╛рд╡реЗрд╢рд╛рджреНрд╡рд╛рд░реЗ рдХрд┐рдВрд╡рд╛ opcache_compile_file() рдлрдВрдХреНрд╢рди рд╡рд╛рдкрд░реВрди рд▓реЛрдб рдХрд░реВ рд╢рдХрддреЗ;

  • Castagnoli рдмрд╣реБрдкрджреА рд╡рд╛рдкрд░реВрди рдЪреЗрдХрд╕рдордЪреА рдЧрдгрдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЕрд╢ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдордзреНрдпреЗ crc32c рдлрдВрдХреНрд╢рди рдЬреЛрдбрд▓реЗ;
  • рд╕реЛрдбрд┐рдпрдо рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рдкрд╛рд╕рд╡рд░реНрдб рд╣реЕрд╢рд┐рдВрдЧ рдкрджреНрдзрддреА argon2i рдЖрдгрд┐ argin2id рд╕рд╛рдареА password_hash() рдлрдВрдХреНрд╢рдирд▓рд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ, рдЬрд░ PHP libargon рд╢рд┐рд╡рд╛рдп рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЕрд╕реЗрд▓;
  • рдЬреЛрдбрд▓реЗрд▓реЗ рдлрдВрдХреНрд╢рди mb_str_split(), str_split() рд╕рд╛рд░рдЦреЗрдЪ, рдкрд░рдВрддреБ рдмрд╛рдЗрдЯреНрд╕рд╕рд╣ рдирд╛рд╣реА рддрд░ рдорд▓реНрдЯреА-рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рд╡рд░реНрдг рдкреЛрдЭрд┐рд╢рдирд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ;
  • strip_tags() рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдЖрддрд╛ рдЯреЕрдЧ рдирд╛рд╡рд╛рдВрд╕рд╣ рдЕреЕрд░реЗ рдкрд╛рд╕ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЖрд╣реЗ, рдЙрджрд╛. strip_tags($str, тАШтАЩ) рдРрд╡рдЬреА рддреБрдореНрд╣реА рдЖрддрд╛ strip_tags($str, [тАШaтАЩ, тАШpтАЩ] рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛;
  • proc_open() рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдРрд╡рдЬреА рдСрдкрд░реЗрдВрдбреНрд╕рдирд╛ рдЕтАНреЕрд░реЗрдордзреНрдпреЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ рдЖрдгрд┐ рдереНрд░реЗрдб рд░реАрдбрд╛рдпрд░реЗрдХреНрд╢рди рдЖрдгрд┐ рдирд▓ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░рд╕рд╛рдареА рд╕рдорд░реНрдерди рджреЗрдЦреАрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // рд╢реЗрд▓рдордзреНрдпреЗ 2>&1 рдкреНрд░рдорд╛рдгреЗ
    proc_open($cmd, [1 => ['рдкрд╛рдЗрдк', 'w'], 2 => ['рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд', 1]], $pipes);

    // рд╢реЗрд▓рдордзреНрдпреЗ 2>/dev/null рдХрд┐рдВрд╡рд╛ 2>nul рд╕рд╛рд░рдЦреЗ
    proc_open($cmd, [1 => ['рдкрд╛рдЗрдк', 'w'], 2 => ['null']], $pipes);

  • рдлрд╛рдпрд░рдмрд░реНрдб/рдЗрдВрдЯрд░рдмреЗрд╕, рд░рд┐рдХреЛрдб рдЖрдгрд┐ рдбрдмреНрд▓реНрдпреВрдбреАрдбреАрдПрдХреНрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдореВрд▓рднреВрдд рдкреЕрдХреЗрдЬрдордзреВрди рд╡рдЧрд│рд▓реЗ рдЖрд╣реЗрдд. рд╣реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдЖрддрд╛ PECL рджреНрд╡рд╛рд░реЗ рд╡рд┐рддрд░реАрдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд;
  • рд╢реНрд░реЗрдгреАрдд рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдХрд╛рд▓рдмрд╛рд╣реНрдп рдХрдВрд╕рд╛рдВрд╢рд┐рд╡рд╛рдп рдиреЗрд╕реНрдЯреЗрдб рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░, рдХрд░реНрд▓реА рдмреНрд░реЗрд╕реЗрд╕ (тАЬ$var{$idx}тАЭ) рд╡рд╛рдкрд░реВрди рдЕреЕрд░реЗ рдШрдЯрдХ рдЖрдгрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдНрдХреНрд╕реЗрд╕ рдХрд░рдгреЗ, is_real() рдлрдВрдХреНрд╢рди рдЖрдгрд┐ рд░рд┐рдЕрд▓рд╡рд░ рдХрд╛рд╕реНрдЯ рдХрд░рдгреЗ, рдкреЕрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕рд╢рд┐рд╡рд╛рдп рдкреЕрд░реЗрдВрдЯ рдХреАрд╡рд░реНрдб рд╡рд╛рдкрд░рдгреЗ, рдкреЕрд░рд╛рдореАрдЯрд░ allow_url_include рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдпрд╛рд╕рд╛рд░рдЦреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ , рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рд╡рд░ array_key_exists() рд╡рд╛рдкрд░реВрди.

    рдлрдВрдХреНрд╢рдиреНрд╕ get_magic_quotes_gpc(), get_magic_quotes_runtime(), рдЖрдгрд┐
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдЪреБрдХреАрдЪреНрдпрд╛ рдЪрд┐рдиреНрд╣рд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддрд╛рдирд╛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдмрджреНрджрд▓ рдЪреЗрддрд╛рд╡рдгреА рджрд┐рд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ.
    base_convert(), bindec(), octdec() рдЖрдгрд┐ hexdec(), рдЖрдгрд┐ mb_ereg_replace() рдордзреНрдпреЗ рдиреЙрди-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреЕрдЯрд░реНрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛рдирд╛.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛