PHP 7.4 proqramlaşdırma dili buraxılışı

Bir illik inkişafdan sonra təqdim etdi proqramlaşdırma dili buraxılışı PHP 7.4. Yeni filiala bir sıra yeni funksiyalar, eləcə də uyğunluğu pozan bir neçə dəyişiklik daxildir.

Açar irəliləyişlər PHP 7.4-də:

  • Yazılan Xüsusiyyətlər - sinif xassələrinə indi növ bəyannamələri daxil ola bilər, məsələn:

    sinif istifadəçisi {
    public int $id;
    ictimai sətir $name;
    }

  • Qısaldılmış “fn(parameter_list) => expr” funksiyalarını dəyərlə bağlayan sintaksis. Məsələn, “fn($x) => $x + $y” analojidir “$fn2 = funksiya ($x) istifadə ($y) {return $x + $y;}”);
  • Stenoqrafiya təyin operatoru Defolt dəyəri təyin etmək üçün istifadə edilə bilən "??=" ("a ??= b" "a = a ?? b" ilə oxşardır, "a" müəyyən edilərsə, dəyəri saxlanılır, müəyyən edilmədikdə isə o dəyəri təyin edilir "b" );
  • Məhdud imkan törəmə qaytarma növlərində növlərin varislik iyerarxiyasını qorumaq və ya törəmə arqument növlərində orijinal növlərin iyerarxiyasını tərsinə çevirmək imkanı (kovariasiya qaytarma növü və arqument tipi ziddiyyət). Aşağıdakı konstruksiyalar artıq PHP-də istifadə edilə bilər:

    sinif A {}
    B sinfi A {}

    sinif prodüser {
    ictimai funksiya metodu(): A {}
    }
    class ChildProducer Produceri genişləndirir {
    ictimai funksiya metodu(): B {}
    }

  • “…$var” massivlərində operatorun paketdən çıxarılması, imkan verir yeni massiv təyin edərkən mövcud massivlərin əvəzlənməsini yerinə yetirmək;

    $hissələr = ['alma', 'armud'];
    $fruits = ['banan', 'portağal', …$hissələr, 'qarpız'];
    // ['banan', 'portağal', 'alma', 'armud', 'qarpız'];

  • Imkan böyük ədədlərin ədədi literallarda ayırıcılarla vizual təsviri (1_000_000_00);
  • Dəstək zəif bağlantılar, hansısa obyektə istinadı saxlamağa imkan verir, lakin zibil kollektorunun əlaqəli obyekti silməsinə mane olmur;
  • Yeni mexanizm obyektin seriallaşdırılması (Serializable və __sleep()/__wakeup() kombinasiyası), köhnələcək Serializable interfeysini əvəz etdi;

    // Obyektin bütün hallarını ehtiva edən massivi qaytarır;
    ictimai funksiya __serialize(): massiv;

    // Massivdən obyektin vəziyyətini bərpa edir
    ictimai funksiya __unserialize($data massivi): void;

  • Metoddan istisnalar atmağa icazə verilir __toString();
  • Obyekt kodu önbelleğinin əvvəlcədən yüklənməsi üçün əlavə dəstək. Tənzimləmə üçün əlavə parametr
    opcache.preload, bunun vasitəsilə siz server işə salındıqda tərtib olunacaq və işlədəcək PHP skriptini təyin edə bilərsiniz. Bu skript digər faylların əməliyyat kodunu onların birbaşa daxil edilməsi və ya opcache_compile_file() funksiyasından istifadə etməklə yükləyə bilər;

  • Castagnoli polinomundan istifadə edərək yoxlama məbləğlərini hesablamaq üçün Hash genişlənməsinə crc32c funksiyası əlavə edildi;
  • PHP libarqon olmadan qurulubsa, Sodium kitabxanasının tətbiqində argon2i və argin2id parol heşinq metodları üçün password_hash() funksiyasına əlavə dəstək;
  • Əlavə edilmiş funksiya mb_str_split(), str_split() funksiyasına bənzəyir, lakin baytlarla deyil, çoxbaytlıq sətirdə simvol mövqeləri ilə işləyir;
  • strip_tags() funksiyası indi teq adları olan massivi ötürmək imkanına malikdir, yəni. strip_tags($str, ' ') əvəzinə siz indi strip_tags($str, ['a', 'p']) təyin edə bilərsiniz;
  • proc_open() operandların işə salınması üçün sətirdən daha çox massivdə sadalanmasına imkan verir və o, həmçinin ipin yönləndirilməsini və null fayl deskriptoru üçün dəstəyi təmin edir;

    proc_open(['php', '-r', 'echo "Salam Dünya\n";'], $deskriptorlar, $pipes);

    // Qabıqda 2>&1 kimi
    proc_open($cmd, [1 => ['boru', 'w'], 2 => ['yönləndirmə', 1]], $boru);

    // shell-də 2>/dev/null və ya 2>nul kimi
    proc_open($cmd, [1 => ['boru', 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase, Recode və WDDX genişləndirmələri əsas paylanmadan çıxarılıb. Bu genişləndirmələr indi PECL vasitəsilə paylanır;
  • Kateqoriyaya köçürüldü köhnəlmişdir mötərizəsiz iç-içə üçlü operatorlar, əyri mötərizələrdən (“$var{$idx}”) istifadə edərək massiv elementlərinə və sətirlərə daxil olmaq, is_real() funksiyası və reala ötürülmə, ana sinif olmadan ana açar sözdən istifadə, allow_url_include parametri kimi xüsusiyyətlər , obyektlərdə array_key_exists() istifadə edərək.

    Get_magic_quotes_gpc(), get_magic_quotes_runtime() və funksiyaları
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Funksiyalarda səhv simvolları emal etməyə cəhd edərkən köhnəlmiş funksiyanın istifadəsi barədə xəbərdarlıq edilmişdir.
    base_convert(), bindec(), octdec() və hexdec() və mb_ereg_replace()-də simli olmayan nümunə təyin edərkən.

Mənbə: opennet.ru

Добавить комментарий