Издание на програмски јазик 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 {}

    класа продуцент {
    метод на јавна функција(): A {}
    }
    класа ChildProducer го проширува продуцентот {
    метод на јавна функција(): B {}
    }

  • Отпакување на операторот во низите „…$var“, дозволувајќи врши замена на постојните низи при дефинирање на нова низа;

    $parts = ['јаболко', 'круша'];
    $fruits = ['банана', 'портокалова', …$делови, 'лубеница'];
    // ['банана', 'портокалова', 'јаболко', 'круша', 'лубеница'];

  • Можност визуелно претставување на големи броеви со разграничувачи во нумерички литерали (1_000_000_00);
  • Поддршка слаби врски, кои ви дозволуваат да задржите референца за некој објект, но не го блокирате собирачот на ѓубре да го избрише поврзаниот објект;
  • Нови машини серијализација на објектот (комбинација од Serializable и __sleep()/__wakeup()), што го замени интерфејсот Serializable, кој ќе биде застарен;

    // Враќа низа што ги содржи сите состојби на објектот;
    јавна функција __serialize(): низа;

    // Ја враќа состојбата на објект од низа
    јавна функција __unserialize (низа $податоци): void;

  • Дозволено е фрлање исклучоци од метод __toString();
  • Додадена е поддршка за претходно вчитување на кешот на објектниот код. Додаден параметар за поставување
    opcache.превчитај, преку кој можете да наведете PHP скрипта што ќе се компајлира и ќе работи кога ќе се стартува серверот. Оваа скрипта може да го вчита оптичкиот код на други датотеки преку нивно директно вклучување или со користење на функцијата 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() дозволува операнди да се набројуваат во низа наместо во низа за извршување, а исто така обезбедува пренасочување на низата и поддршка за дескриптор на нула датотека;

    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);

  • Наставките 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

Додадете коментар