Бир жылдык өнүгүүдөн кийин программалоо тили чыгаруу . Жаңы бутак бир катар жаңы функцияларды, ошондой эле шайкештикти бузган бир нече өзгөртүүлөрдү камтыйт.
Ачкыч 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де төмөнкү конструкцияларды колдонсо болот:
класс А {}
класс B узартат А {}класс продюсер {
коомдук функция ыкмасы(): A {}
}
class ChildProducer Продюсерди кеңейтет {
коомдук функция ыкмасы(): B {}
} - “…$var” массивдериндеги операторду таңгактан чыгаруу, жаңы массивди аныктоодо учурдагы массивдерди алмаштырууну аткаруу;
$parts = ['алма', 'алмурут'];
$fruits = ['банан', 'апельсин', …$бөлүктөрү, 'дарбыз'];
// ['банан', 'апельсин', 'алма', 'алмурут', 'дарбыз']; - чоң сандарды сандык литералдардагы бөлгүчтөр менен визуалдык көрсөтүү (1_000_000_00);
- колдоо , бул объектке шилтемени сактап калууга мүмкүндүк берет, бирок таштанды жыйноочуга байланышкан объектти өчүрүүгө бөгөт койбойт;
- жаңы объектти сериялаштыруу (Serializable жана __sleep()/__wakeup() комбинациясы), ал эскирүүчү Serializable интерфейсин алмаштырды;
// Объекттин бардык абалын камтыган массивди кайтарат;
коомдук функция __serialize(): array;// Массивден объекттин абалын калыбына келтирет
коомдук функция __unserialize($дата массиви): void; - Методдон бөтөнчөлөрдү чыгарууга уруксат берилет ;
- Объект коду кэшин алдын ала жүктөө үчүн кошумча колдоо. Орнотуу үчүн кошумча параметр
, анын жардамы менен сиз сервер башталганда түзүлө турган жана иштей турган PHP скриптин көрсөтө аласыз. Бул скрипт башка файлдардын операция кодун аларды түздөн-түз кошуу же opcache_compile_file() функциясын колдонуу аркылуу жүктөй алат; - Castagnoli полиномиясын колдонуу менен текшерүү суммасын эсептөө үчүн Hash кеңейтүүсүнө crc32c функциясы кошулду;
- Натрий китепканасын ишке ашырууда argon2i жана argin2id сырсөздөрдү хэштөө ыкмалары үчүн password_hash() функциясына колдоо кошулду, эгерде PHP либаргонсуз курулса;
- Кошулган 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]], $түтүктөр);// кабыктагы 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() ичинде сап эмес үлгү көрсөтүүдө.
Source: opennet.ru
