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-де келесі конструкцияларды қолдануға болады:

    А класы {}
    B класы А {} кеңейтеді

    класс продюсері {
    қоғамдық функция әдісі(): A {}
    }
    class ChildProducer продюсерді кеңейтеді {
    қоғамдық функция әдісі(): B {}
    }

  • «…$var» массивтерінің ішіндегі операторды ашу, мүмкіндік беру жаңа массивті анықтау кезінде бар массивтерді ауыстыруды орындау;

    $parts = ['алма', 'алмұрт'];
    $fruits = ['банан', 'апельсин', ...$бөліктер, 'қарбыз'];
    // ['банан', 'апельсин', 'алма', 'алмұрт', 'қарбыз'];

  • Қабілеті үлкен сандарды сандық литералдардағы бөлгіштермен көрнекі түрде көрсету (1_000_000_00);
  • қолдау әлсіз сілтемелер, ол сізге нысанға сілтемені сақтауға мүмкіндік береді, бірақ қоқыс жинағышқа байланысты нысанды жоюды блоктамайды;
  • жаңа машиналар объектінің сериялануы (Serializable және __sleep()/__wakeup() комбинациясы), ол ескіретін Serializable интерфейсін ауыстырды;

    // Нысанның барлық күйлерін қамтитын массивді қайтарады;
    жалпы функция __serialize(): массив;

    // Жиымнан нысанның күйін қалпына келтіреді
    жалпы функция __unserialize($data массиві): void;

  • Әдістен ерекше жағдайларды шығаруға рұқсат етілген __toString();
  • Нысан коды кэшін алдын ала жүктеуге қолдау қосылды. Орнату үшін параметр қосылды
    opcache.preload, ол арқылы сервер іске қосылғанда құрастырылатын және іске қосылатын 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’]], $құбырлар);

  • 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

пікір қалдыру