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(массив $деректер): void;

  • Ерекшеліктерді әдістен шығаруға рұқсат ету __toString();
  • Нысан коды кэшін алдын ала жүктеуге қолдау қосылды. Конфигурация үшін жаңа параметр қосылды.
    opcache.preload, бұл сервер іске қосылғанда құрастырылатын және іске қосылатын PHP сценарийін көрсетуге мүмкіндік береді. Бұл сценарий басқа файлдардың операциялық кодтарын оларды тікелей қосу немесе opcache_compile_file() функциясын пайдалану арқылы жүктей алады;
  • crc32c функциясы Castagnoli көпмүшелігін пайдаланып бақылау сомасын есептеу үшін Хэш кеңейтіміне қосылды;
  • password_hash() функциясы, егер PHP либаргонсыз құрастырылған болса, Natrium кітапханасын іске асыруда argon2i және argin2id құпия сөзді хэштеу әдістерін қолдау үшін жаңартылды;
  • str_split() функциясына ұқсас mb_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_ex нысандарын пайдалану сияқты мүмкіндіктер.

    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

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster