ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ PHP 7.4

Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ прСдставСни вСрсия Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ PHP 7.4. Новият ΠΊΠ»ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π²Π° сСрия ΠΎΡ‚ Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ няколко ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Ρ‚ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π°.

ΠšΠ»ΡŽΡ‡ подобрСния Π² PHP 7.4:

  • Π’ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ΠΈ свойства - свойствата Π½Π° класа Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

    клас ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» {
    public int $id;
    ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ Π½ΠΈΠ· $name;
    }

  • Π‘ΡŠΠΊΡ€Π°Ρ‚Π΅Π½ΠΎ синтаксис Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€žfn(parameter_list) => exprβ€œ с ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ…Π²Π°Ρ‚ ΠΏΠΎ стойност. НапримСр β€žfn($x) => $x + $yβ€œ Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π° β€ž$fn2 = функция ($x) ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ($y) {Π²Ρ€ΡŠΡ‰Π° $x + $y;}β€œ);
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π° ΡΡŠΠΊΡ€Π°Ρ‚Π΅Π½ΠΎ присвояванС "??=", ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° стойност ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ("a ??= b" Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° "a = a ?? b", Π°ΠΊΠΎ "a" Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ, Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° стойност сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°, Π° Π°ΠΊΠΎ Π½Π΅ Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ, сС присвоява стойността "b" );
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° йСрархията Π½Π° наслСдяванС Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈ Π²Ρ€ΡŠΡ‰Π°Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΎΠ±Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° йСрархията Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ (ковариация Π²Ρ€ΡŠΡ‰Π°Π½ Ρ‚ΠΈΠΏ ΠΈ контравариантност Π½Π° Ρ‚ΠΈΠΏΠ° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚). Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ конструкции Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² PHP:

    клас A {}
    клас B Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° A {}

    клас ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π» {
    ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° функция(): A {}
    }
    клас ChildProducer Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° производитСля {
    ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° функция(): B {}
    }

  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π° Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π² масиви β€žβ€¦$varβ€œ, позволяващ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° замСстванС Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ масиви ΠΏΡ€ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΎΠ² масив;

    $parts = ['ябълка', 'ΠΊΡ€ΡƒΡˆΠ°'];
    $ΠΏΠ»ΠΎΠ΄ΠΎΠ²Π΅ = ['Π±Π°Π½Π°Π½', 'ΠΏΠΎΡ€Ρ‚ΠΎΠΊΠ°Π»', …$части, 'диня'];
    // ['Π±Π°Π½Π°Π½', 'ΠΏΠΎΡ€Ρ‚ΠΎΠΊΠ°Π»', 'ябълка', 'ΠΊΡ€ΡƒΡˆΠ°', 'диня'];

  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»Π½ΠΎ прСдставянС Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ числа с Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Π² числови Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΈ (1_000_000_00);
  • ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° слаби Π²Ρ€ΡŠΠ·ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠ° към ΠΎΠ±Π΅ΠΊΡ‚, Π½ΠΎ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ ΡΡŠΠ±ΠΈΡ€Π°Ρ‡Π° Π½Π° ΠΎΡ‚ΠΏΠ°Π΄ΡŠΡ†ΠΈ Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅ асоциирания ΠΎΠ±Π΅ΠΊΡ‚;
  • Нов ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ сСриализация Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ (комбинация ΠΎΡ‚ Serializable ΠΈ __sleep()/__wakeup()), която Π·Π°ΠΌΠ΅Π½ΠΈ интСрфСйса Serializable, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½;

    // Π’Ρ€ΡŠΡ‰Π° масив, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ всички ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π°;
    ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Π° функция __serialize(): масив;

    // Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ ΠΎΡ‚ масив
    ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Π° функция __unserialize(масив $data): void;

  • ПозволСно Π΅ Π΄Π° сС Ρ…Π²ΡŠΡ€Π»ΡΡ‚ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ __toString();
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° кСша Π½Π° обСктния ΠΊΠΎΠ΄. Π”ΠΎΠ±Π°Π²Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π·Π° настройка
    opcache.preload, Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ PHP скрипт, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° ΠΈ стартира ΠΏΡ€ΠΈ стартиранС Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. Π’ΠΎΠ·ΠΈ скрипт ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Ρ€Π΅Π΄ΠΈ ΠΊΠΎΠ΄Π° Π½Π° опСрацията Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Ρ‡Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎΡ‚ΠΎ ΠΈΠΌ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π· функцията opcache_compile_file();

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° функция crc32c към Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Hash Π·Π° изчисляванС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ суми с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠ° Π½Π° ΠšΠ°ΡΡ‚Π°Π½ΡŒΠΎΠ»ΠΈ;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° функцията password_hash() Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° Ρ…Π΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»ΠΈ argon2i ΠΈ argin2id, Π² ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Sodium, Π°ΠΊΠΎ 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 Π² shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // ΠΊΠ°Ρ‚ΠΎ 2>/dev/null ΠΈΠ»ΠΈ 2>nul Π² shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡΡ‚Π° Firebird/Interbase, Recode ΠΈ WDDX са ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ ΠΎΡ‚ основната дистрибуция. Π’Π΅Π·ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π²Π΅Ρ‡Π΅ сС разпространяват Ρ‡Ρ€Π΅Π· PECL;
  • ΠŸΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½ Π² катСгория остарял Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ‚Ρ€ΠΎΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π±Π΅Π· скоби, Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° масив ΠΈ Π½ΠΈΠ·ΠΎΠ²Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΈ скоби (β€œ$var{$idx}”), функцията is_real() ΠΈ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ към 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€