Selepas setahun pembangunan keluaran bahasa pengaturcaraan Cawangan baharu termasuk beberapa ciri baharu, serta beberapa perubahan yang tidak serasi.
kunci dalam PHP 7.4:
- — sifat kelas kini boleh memasukkan pengisytiharan jenis, contohnya:
Pengguna kelas {
public int $id;
rentetan awam $nama;
} - sintaks definisi fungsi "fn(parameter_list) => expr" dengan pengikatan skop nilai. Contohnya, "fn($x) => $x + $y" bersamaan dengan "$fn2 = function ($x) use ($y) {return $x + $y;}");
- "??=", yang boleh digunakan untuk mentakrifkan nilai lalai ("a ??= b" adalah serupa dengan "a = a ?? b", jika "a" ditakrifkan nilainya dikekalkan, dan jika tidak ditakrifkan nilai "b" diberikan);
- Terhad mengekalkan hierarki warisan jenis dalam jenis nilai pulangan yang diperoleh daripada mereka atau kemungkinan mengubah hierarki jenis asal kepada sebaliknya dalam jenis argumen terbitan ( jenis pulangan dan kontravarian jenis hujah). Pembinaan berikut kini boleh digunakan dalam PHP:
kelas A {}
kelas B memanjangkan A {}Pengeluar kelas {
kaedah fungsi awam(): A {}
}
kelas ChildProducer memanjangkan Producer {
kaedah fungsi awam(): B {}
} - Operator pembongkaran di dalam tatasusunan "...$var", melakukan penggantian tatasusunan sedia ada apabila menentukan tatasusunan baharu;
$bahagian = ['epal', 'pir'];
$buah = ['pisang', 'oren', …$bahagian, 'tembikai'];
// ['pisang', 'oren', 'epal', 'pir', 'tembikai']; - persembahan visual nombor besar dengan pemisah dalam literal angka (1_000_000_00);
- Sokongan , yang membenarkan rujukan kepada objek dipelihara, tetapi tidak menghalang penyingkiran objek yang berkaitan oleh pemungut sampah;
- baru siri objek (gabungan Serializable dan __sleep()/__wakeup()), menggantikan antara muka Serializable, yang akan diisytiharkan usang;
// Mengembalikan tatasusunan yang mengandungi semua keadaan objek;
fungsi awam __serialize(): tatasusunan;// Mengembalikan keadaan objek daripada tatasusunan
fungsi awam __unserialize(array $data): void; - Membenarkan pengecualian dibuang daripada kaedah ;
- Menambah sokongan untuk pramuat cache kod objek. Parameter baharu telah ditambahkan untuk konfigurasi.
, yang membolehkan anda menentukan skrip PHP yang akan disusun dan dijalankan apabila pelayan bermula. Skrip ini boleh memuatkan opcode fail lain dengan memasukkannya terus atau menggunakan fungsi opcache_compile_file(); - Fungsi crc32c telah ditambahkan pada sambungan Hash untuk mengira jumlah semak menggunakan polinomial Castagnoli;
- Fungsi password_hash() telah dikemas kini untuk menyokong kaedah pencincangan kata laluan argon2i dan argin2id dalam pelaksanaan perpustakaan Sodium jika PHP dibina tanpa libargon;
- Menambah fungsi mb_str_split(), serupa dengan str_split(), tetapi beroperasi bukan pada bait tetapi pada kedudukan aksara dalam rentetan berbilang bait;
- Fungsi strip_tags() kini membolehkan anda menghantar tatasusunan nama tag, iaitu bukannya strip_tags($str, ' ') anda kini boleh menentukan strip_tags($str, ['a', 'p']);
- proc_open() membenarkan penyenaraian operan dalam tatasusunan dan bukannya menentukan rentetan untuk dijalankan, dan juga melaksanakan keupayaan untuk mengubah hala strim dan menyokong deskriptor fail null;
proc_open(['php', '-r', 'echo "Hello World\n";'], $deskriptor, $pipes);
// Seperti 2>&1 dalam cangkerang
proc_open($cmd, [1 => ['paip', 'w'], 2 => ['redirect', 1]], $pipes);// seperti 2>/dev/null atau 2>nul dalam shell
proc_open($cmd, [1 => ['paip', 'w'], 2 => ['null']], $paip); - Sambungan Firebird/Interbase, Recode dan WDDX telah dialih keluar daripada pengedaran asas. Sambungan ini kini diedarkan melalui PECL;
- Dipindahkan ke kategori Ciri seperti pengendali ternary bersarang tanpa kurungan, mengakses elemen tatasusunan dan rentetan menggunakan pendakap kerinting ("$var{$idx}"), fungsi is_real() dan menghantar ke nyata, menggunakan kata kunci induk tanpa kelas induk, pilihan konfigurasi allow_url_include dan menggunakan array_key_exists() pada objek.
Fungsi get_magic_quotes_gpc(), get_magic_quotes_runtime() telah diisytiharkan tidak digunakan lagi.
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().Memberi amaran tentang menggunakan ciri yang tidak digunakan apabila cuba memproses aksara tidak sah dalam fungsi
base_convert(), bindec(), octdec(), dan hexdec(), dan apabila menentukan corak bukan rentetan dalam mb_ereg_replace().
Sumber: opennet.ru
