ืฉื—ืจื•ืจ ืฉืคืช ื”ืชื›ื ื•ืช PHP 7.4

ืœืื—ืจ ืฉื ื” ืฉืœ ืคื™ืชื•ื— ื”ืฆื™ื’ ืฉื—ืจื•ืจ ืฉืคืช ืชื›ื ื•ืช PHP 7.4. ื”ืกื ื™ืฃ ื”ื—ื“ืฉ ื›ื•ืœืœ ืฉื•ืจื” ืฉืœ ืคื™ืฆ'ืจื™ื ื—ื“ืฉื™ื, ื›ืžื• ื’ื ืžืกืคืจ ืฉื™ื ื•ื™ื™ื ื”ืฉื•ื‘ืจื™ื ืืช ื”ืชืื™ืžื•ืช.

ืžืคืชื— ืฉื™ืคื•ืจื™ื ื‘-PHP 7.4:

  • ืžืืคื™ื™ื ื™ื ืžื•ืงืœื“ื™ื - ืžืืคื™ื™ื ื™ ืžื—ืœืงื” ื™ื›ื•ืœื™ื ื›ืขืช ืœื›ืœื•ืœ ื”ืฆื”ืจื•ืช ืกื•ื’, ืœื“ื•ื’ืžื”:

    class User {
    int public $id;
    ืžื—ืจื•ื–ืช ืฆื™ื‘ื•ืจื™ืช $name;
    }

  • ืžึฐืงื•ึผืฆึธืจ ืชื—ื‘ื™ืจ ืœื”ื’ื“ืจืช ืคื•ื ืงืฆื™ื•ืช "fn(parameter_list) => expr" ืขื ืžื—ื™ื™ื‘ ื”ื™ืงืฃ ืœืคื™ ืขืจืš. ืœื“ื•ื’ืžื”, "fn($x) => $x + $y" ืžืงื‘ื™ืœ ืœ-"$fn2 = function ($x) use ($y) {return $x + $y;}");
  • ืžืคืขื™ืœ ืžื˜ืœื•ืช ืงื™ืฆื•ืจ "??=" ืฉื‘ื• ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืขืจืš ื‘ืจื™ืจืช ืžื—ื“ืœ ("a ??= b" ื“ื•ืžื” ืœ-"a = a ?? b", ืื "a" ืžื•ื’ื“ืจ ื”ืขืจืš ืฉืœื• ืžืื•ื—ืกืŸ, ื•ืื ืœื ืžื•ื’ื“ืจ ืื•ืชื• ืžื•ืงืฆื” ื”ืขืจืš "b" );
  • ืžื•ื’ื‘ืœ ื”ื–ื“ืžื ื•ืช ืฉืžื™ืจื” ืขืœ ื”ื™ืจืจื›ื™ื™ืช ื”ื™ืจื•ืฉื” ืฉืœ ื˜ื™ืคื•ืกื™ื ื‘ืกื•ื’ื™ ื”ื—ื–ืจื” ื ื’ื–ืจื™ื, ืื• ื”ื™ื›ื•ืœืช ืœื”ืคื•ืš ืืช ื”ื”ื™ืจืจื›ื™ื” ืฉืœ ื”ื˜ื™ืคื•ืกื™ื ื”ืžืงื•ืจื™ื™ื ื‘ืกื•ื’ื™ ืืจื’ื•ืžื ื˜ื™ื ื ื’ื–ืจื™ื (ืฉื™ืชื•ืคื™ื•ืช ืกื•ื’ ื”ื—ื–ืจ ื•ืกื•ื’ ืืจื’ื•ืžื ื˜ ื‘ื ื™ื’ื•ื“). ื›ืขืช ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžื‘ื ื™ื ื”ื‘ืื™ื ื‘-PHP:

    ืžื—ืœืงื” ื' {}
    ืžื—ืœืงื” B ืžืจื—ื™ื‘ื” ืืช A {}

    ืžืคื™ืง ืžื—ืœืงื” {
    public function method(): A {}
    }
    class ChildProducer ืžืจื—ื™ื‘ ืืช ื”ืžืคื™ืง {
    public function method(): B {}
    }

  • ืžืคืจืงืช ืื•ืคืจื˜ื•ืจ ื‘ืชื•ืš ืžืขืจื›ื™ื "...$var", ืžึฐืึทืคืฉืึถืจ ืœื‘ืฆืข ื”ื—ืœืคื” ืฉืœ ืžืขืจื›ื™ื ืงื™ื™ืžื™ื ื‘ืขืช ื”ื’ื“ืจืช ืžืขืจืš ื—ื“ืฉ;

    $parts = ['apple', 'pear'];
    $fruits = ['ื‘ื ื ื”', 'ื›ืชื•ื', โ€ฆ$ื—ืœืงื™ื, 'ืื‘ื˜ื™ื—'];
    // ['ื‘ื ื ื”', 'ืชืคื•ื–', 'ืชืคื•ื—', 'ืื’ืก', 'ืื‘ื˜ื™ื—'];

  • ื”ื–ื“ืžื ื•ืช ื™ื™ืฆื•ื’ ื—ื–ื•ืชื™ ืฉืœ ืžืกืคืจื™ื ื’ื“ื•ืœื™ื ืขื ืชื•ื—ืžื™ื ืžื™ืœื•ืœื™ื™ื ืžืกืคืจื™ื™ื (1_000_000_00);
  • ืชืžื™ื›ื” ื—ื•ืœื™ื•ืช ื—ืœืฉื•ืช, ื”ืžืืคืฉืจื™ื ืœืš ืœืฉืžื•ืจ ื”ืคื ื™ื” ืœืื•ื‘ื™ื™ืงื˜, ืืš ืœื ื—ื•ืกืžื™ื ืืช ืื•ืกืฃ ื”ืืฉืคื” ืžืœืžื—ื•ืง ืืช ื”ืื•ื‘ื™ื™ืงื˜ ื”ืžืฉื•ื™ืš;
  • ื—ื“ืฉ ืžื ื’ื ื•ืŸ ื”ืกื“ืจืช ืื•ื‘ื™ื™ืงื˜ื™ื (ืฉื™ืœื•ื‘ ืฉืœ Serializable ื•-__sleep()/__wakeup()), ืฉื”ื—ืœื™ืฃ ืืช ืžืžืฉืง Serializable, ืฉื™ื•ืฆื ืžืฉื™ืžื•ืฉ;

    // ืžื—ื–ื™ืจื” ืžืขืจืš ื”ืžื›ื™ืœ ืืช ื›ืœ ื”ืžืฆื‘ื™ื ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜;
    ืคื•ื ืงืฆื™ื” ืฆื™ื‘ื•ืจื™ืช __serialize(): ืžืขืจืš;

    // ืžืฉื—ื–ืจ ืืช ื”ืžืฆื‘ ืฉืœ ืื•ื‘ื™ื™ืงื˜ ืžืžืขืจืš
    ืคื•ื ืงืฆื™ื” ืฆื™ื‘ื•ืจื™ืช __unserialize(ืžืขืจืš $data): void;

  • ืžื•ืชืจ ืœื–ืจื•ืง ื—ืจื™ื’ื™ื ืžืฉื™ื˜ื” __toString();
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืœื˜ืขื™ื ื” ืžืจืืฉ ืฉืœ ืžื˜ืžื•ืŸ ืงื•ื“ ื”ืื•ื‘ื™ื™ืงื˜. ื ื•ืกืฃ ืคืจืžื˜ืจ ืœื”ื’ื“ืจื”
    opcache.preload, ืฉื“ืจื›ื• ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืกืงืจื™ืคื˜ PHP ืฉื™ืงื•ืžืคื™ืœ ื•ื™ืจื•ืฅ ื›ืืฉืจ ื”ืฉืจืช ื™ืชื—ื™ืœ. ืกืงืจื™ืคื˜ ื–ื” ื™ื›ื•ืœ ืœื˜ืขื•ืŸ ืืช opcode ืฉืœ ืงื‘ืฆื™ื ืื—ืจื™ื ื‘ืืžืฆืขื•ืช ื”ื›ืœืœื” ื™ืฉื™ืจื” ืฉืœื”ื ืื• ื‘ืืžืฆืขื•ืช ื”ืคื•ื ืงืฆื™ื” opcache_compile_file();

  • ื ื•ืกืคื” ืคื•ื ืงืฆื™ื™ืช crc32c ืœื”ืจื—ื‘ืช Hash ืœื—ื™ืฉื•ื‘ ืกื›ื•ืžื™ ื‘ื™ืงื•ืจืช ื‘ืืžืฆืขื•ืช ืคื•ืœื™ื ื•ื Castagnoli;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืœืคื•ื ืงืฆื™ื™ืช password_hash() ืขื‘ื•ืจ ืฉื™ื˜ื•ืช ื’ื™ื‘ื•ื‘ ืกื™ืกืžืื•ืช argon2i ื•-argin2id, ื‘ื™ื™ืฉื•ื ืกืคืจื™ื™ืช Sodium, ืื PHP ื‘ื ื•ื™ ืœืœื libargon;
  • ื ื•ืกืคื” ืคื•ื ืงืฆื™ื” mb_str_split(), ื‘ื“ื•ืžื” ืœ-str_split(), ืืš ืคื•ืขืœืช ืœื ืขื ื‘ืชื™ื ืืœื ืขื ืžื™ืงื•ืžื™ ืชื•ื•ื™ื ื‘ืžื—ืจื•ื–ืช ืžืจื•ื‘ื” ื‘ืชื™ื;
  • ืœืคื•ื ืงืฆื™ื” strip_tags() ื™ืฉ ื›ืขืช ืืช ื”ื™ื›ื•ืœืช ืœื”ืขื‘ื™ืจ ืžืขืจืš ืขื ืฉืžื•ืช ืชื’ื™ื, ื›ืœื•ืžืจ. ื‘ืžืงื•ื strip_tags($str, ' ') ืืชื” ื™ื›ื•ืœ ื›ืขืช ืœืฆื™ื™ืŸ strip_tags($str, ['a', 'p']);
  • proc_open() ืžืืคืฉืจ ืœืจืฉื•ื ืืช ื”ืื•ืคืจื ื“ื™ื ื‘ืžืขืจืš, ื•ืœื ื‘ืžื—ืจื•ื–ืช ืœืคืขื•ืœ, ื•ื›ืŸ ืžืกืคืง ื”ืคื ื™ื™ืช ืฉืจืฉื•ืจ ื•ืชืžื™ื›ื” ื‘ืžืชืืจ ืงื•ื‘ืฅ null;

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

    // ื›ืžื• 2>&1 ื‘ืžืขื˜ืคืช
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // ื›ืžื• 2>/dev/null ืื• 2>nul ื‘ืžืขื˜ืคืช
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • ื”ืจื—ื‘ื•ืช Firebird/Interbase, Recode ื•- WDDX ืื™ื ืŸ ื ื›ืœืœื•ืช ื‘ื”ืคืฆื” ื”ื‘ืกื™ืกื™ืช. ื”ืจื—ื‘ื•ืช ืืœื• ืžื•ืคืฆื•ืช ื›ืขืช ื‘ืืžืฆืขื•ืช 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”