Jadual Kandungan
Peningkatan sistem jenis
Baca sahaja readonly Kelas
Random Baharu random Sambungan
Pemalar dalam Ciri
Menyokong menyembunyikan parameter sensitif
Fungsi dan kelas baharu
Menghuraikan kapasiti INIini_parse_quantity" >Menghuraikan kapasiti INIini_parse_quantity
Kekalkan sambungan CURL curl_upkeep
获取加密密钥长度 openssl_cipher_key_length
重置记录的内存使用峰值 memory_reset_peak_usage
PHP 8.2 弃用情况
弃用动态属性
弃用 utf8_encodeutf8_decode 函数
弃用 ${var} 字符串格式
Rumah pembangunan bahagian belakang PHP8 Perbincangan ringkas tentang kemajuan kemas kini PHP 8.2

Perbincangan ringkas tentang kemajuan kemas kini PHP 8.2

Dec 15, 2022 am 11:43 AM
php

PHP 8.2 membawakan penambahbaikan sistem jenis, kelas `baca sahaja`, sokongan penyembunyian parameter sensitif, sambungan `rawak` rawak baharu dan banyak ciri termasuk memudahkan dan memodenkan PHP, mari kita lihat, saya semoga ianya bermanfaat kepada semua.

Perbincangan ringkas tentang kemajuan kemas kini PHP 8.2

Pembelajaran yang disyorkan: "Tutorial Video PHP"

PHP 8.2 membawakan penambahbaikan sistem jenis, kelas baca sahaja readonly , sokongan menyembunyikan parameter sensitif, sambungan random rawak baharu dan banyak ciri termasuk memudahkan dan memodenkan PHP.

PHP 8.2 ialah peristiwa penting dalam pemodenan PHP. Selain ciri dan penambahbaikan baharu yang menarik, PHP 8.2 berfungsi dengan menghentikan sokongan sifat dinamik, mengeluarkan amaran pada nilai konfigurasi INI dan membetulkan beberapa gelagat warisan untuk pengisihan tatasusunan dan penukaran rentetan.

Peningkatan sistem jenis

PHP 8.2 menyelesaikan beberapa kelemahan dan pengehadan sistem jenis asal, membolehkan projek PHP mempunyai keselamatan jenis yang lebih baik. Ini termasuk menambah sokongan untuk jenis true dan membenarkan penggunaan null dan false sebagai jenis bebas, serta menambah sokongan untuk jenis DNF.

Sokongan jenis Disjoint Normal Form (DNF) - Dalam PHP 8.2, pembangun boleh menggabungkan jenis Union union (PHP 8.0) dan jenis Intersection intersection (PHP 8.1), membenarkan Deklarasi lebih lanjut parameter, pulangan dan jenis harta yang tepat. Pengisytiharan jenis

function process((HTMLRequest & RequestInterface) | APIRequest $request) {
 // ...
}
Salin selepas log masuk

(HTMLRequest & RequestInterface) | APIRequest bermakna $request mestilah contoh APIRequest atau melaksanakan kedua-dua HTMLRequest dan RequestInterface .

Sebaliknya, selepas menyertai jenis bebas true dan false, jenis nilai pulangan tetap bool boleh ditukar kepada jenis konkrit.

function alwaysReturnsFalse(): false {}

function alwaysReturnsNull(): null {}

function alwaysReturnsTrue(): true {}
Salin selepas log masuk

Pada masa lalu, kami telah dapat mentakrifkan parameter nullable dalam bentuk string|null, tetapi dalam PHP 8.2, kami akan dapat menggunakan terus null sebagai jenis bebas.

Baca sahaja readonly Kelas

PHP 8.1 menambah sokongan untuk jenis baca sahaja hanya boleh diberikan sekali semasa permulaan, dan pengubahsuaian seterusnya akan disekat oleh PHP.

Dan PHP 8.2 memanjangkan atribut baca sahaja kepada kelas baca sahaja. Apabila kelas diisytiharkan baca sahaja, semua sifatnya diisytiharkan baca sahaja secara automatik. Selain itu, ia memastikan bahawa semua sifat dalam kelas baca sahaja mempunyai pengisytiharan jenis.

// PHP 8.2
readonly class User {
	public string $username;
	public int $uid;
}

// PHP 8.1 等效写法
class User {
	public readonly string $username;
	public readonly int $uid;
}
Salin selepas log masuk

Random Baharu random Sambungan

Sepanjang sejarah PHP, ia telah menyokong pelbagai penjana nombor rawak (RNG). Setiap penjana mempunyai prestasi, senario penggunaan dan keselamatan yang berbeza. PHP 8.2 menstruktur semula semua fungsi berkaitan RNG menjadi sambungan baharu bernama random.

random sambungan kekal serasi dengan API sedia ada sambil menyediakan kefungsian yang sama, jadi fungsi seperti rand mt_rand random_bytes random_int boleh terus berfungsi tanpa sebarang perubahan. Tetapi sambungan random menyediakan API berorientasikan objek baharu untuk menjana nombor rawak dengan seni bina modular, menjadikannya lebih mudah untuk mensimulasikan RNG dan menyediakan RNG baharu, menjadikan projek ujian lebih selamat dan mudah.

Pemalar dalam Ciri

PHP 8.2 membenarkan pemalar ditakrifkan dalam Ciri. Sudah tentu, anda tidak boleh mengakses Traits secara langsung, tetapi pemalar dalam Traits menjadi pemalar kelas apabila diwarisi.

trait FooBar {
	const FOO = 'foo';
	private const BAR = 'bar';
	final const BAZ = 'baz';
	final protected const QUX = 'qux';
}

class Test {
	use FooBar;
}

echo Test::BAZ; // 'bar'
Salin selepas log masuk

Perlu diambil perhatian bahawa pemalar dalam Ciri tidak boleh bercanggah dengan pemalar dalam Ciri atau kelas lain.

Menyokong menyembunyikan parameter sensitif

PHP 8.2 menambah anotasi parameter #[SensitiveParameter] baharu untuk menyembunyikan nilai sebenar dalam ralat dan maklumat tindanan.

Fungsi yang menerima kata laluan, kunci peribadi atau maklumat sensitif lain boleh menggunakan #[SensitiveParameter] untuk menyembunyikan nilai tertentu. Jika ralat atau pengecualian berlaku, nilai yang sepadan akan digantikan dengan objek SensitiveParameterValue.

Fungsi terbina dalam PHP seperti password_hash dan password_verify dianotasi dengan parameter #[SensitiveParameter].

- function passwordHash(string $password)  {

+ function passwordHash(#[\SensitiveParameter] string $password)  {
        debug_print_backtrace();
    }
    passwordHash('hunter2');
Salin selepas log masuk
array(1) {
    [0]=> array(4) {
        ["file"]=> string(38) "..."
        ["line"]=> int(9)
        ["function"]=> string(3) "foo"
        ["args"]=> array(1) {
-           [0]=> string(38) "hunter2"
+           [0]=> object(SensitiveParameterValue)#1 (0) {}
        }
    }
}
Salin selepas log masuk

Fungsi dan kelas baharu

Menghuraikan kapasiti INIini_parse_quantity

ini_parse_quantity('256M'); // 268435456
Salin selepas log masuk

Kekalkan sambungan CURL curl_upkeep

Fungsi curl_upkeep dalam sambungan PHP 8.2 Curl mencetuskan perpustakaan Curl yang mendasari untuk menjalankan tugas yang diperlukan untuk memastikan sambungan Curl aktif . Kes penggunaan yang paling biasa untuk fungsi ini adalah untuk mengekalkan sambungan berterusan HTTP (Keep-Alive) dengan memanggil fungsi curl_upkeep secara berkala.

获取加密密钥长度 openssl_cipher_key_length

在 PHP 8.2 OpenSSL 中,有一个名为 openssl_cipher_key_length 的新函数,它返回任何受支持的 OpenSSL 密码所需的密钥长度(以字节为单位)。

此功能消除了对 OpenSSL 密码操作所需密钥长度进行硬编码的需要。

openssl_cipher_key_length("CHACHA20-POLY1305"); // 32

openssl_cipher_key_length("AES-128-GCM"); // 16

openssl_cipher_key_length("AES-256-GCM"); // 32
Salin selepas log masuk

重置记录的内存使用峰值 memory_reset_peak_usage

PHP 8.2 添加了一个名为 memory_reset_peak_usage 的新函数,用于重置由 memory_get_peak_usage 函数返回的峰值内存使用量。

这对于多次调用或迭代一个动作并且需要记录每次调用的峰值内存使用量的应用程序很有帮助。 如果没有 memory_reset_peak_usage 函数重置内存使用情况,memory_get_peak_usage 将会返回整个运行过程中的绝对峰值内存使用情况。

PHP 8.2 弃用情况

PHP 8.2 也带来了相当一部分弃用。当语法、函数或特性被弃用时,PHP 会发出弃用通知,该通知不会中断 PHP 应用,但会记录到错误日志中。

弃用动态属性

PHP 8.2 中最值得注意的弃用之一是它弃用了动态声明的类属性。虽然可以忽略错误,但建议在类中声明类属性,加上类型声明就更好了。

class User {
	public int $uid;
}

$user = new User();
$user->name = 'Foo';
Salin selepas log masuk
Deprecated: Creation of dynamic property User::$name is deprecated in ... on
Salin selepas log masuk

许多古老的 PHP 应用程序很可能会受到此更改的影响,因为它们在扩展时往往不声明类属性,或者随着变化多年来不断发展。

当然了,选择忽略或例外也是存在的:

  • 匿名类及其子类(stdClass

  • 具有 __get__set 魔术方法的类

  • 具有 #[AllowDynamicProperties] 注解的类

弃用 utf8_encodeutf8_decode 函数

PHP 8.2 终于弃用这两名字跟实际效果不一致的函数,虽然名为 utf8 但实际上是 Latin 1 (ISO-8859-1)。

大多数使用这些函数的 PHP 项目往往没有意识到这个问题。推荐的替代品包括 mbstringiconvintl 扩展以提供更好的功能。

弃用 ${var} 字符串格式

PHP 一直支持使用 foo {$bar} 模式的字符串变量插值,以及将美元符号放在大括号外的替代语法 foo ${bar}

在 PHP 8.2 中,将美元符号放在花括号外的替代语法已弃用。

已弃用 推荐替代
Hello ${name} Hello {$name}
Hello {var} Hello {$$var}

此外,PHP 8.2 还弃用了一些部分支持的 callable 模式和 Mbstring 扩展对 Base64、Uuencode、QPrint 和 HTML 实体编码的处理。

推荐学习:《PHP视频教程

Atas ialah kandungan terperinci Perbincangan ringkas tentang kemajuan kemas kini PHP 8.2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini 7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini Nov 13, 2024 am 09:42 AM

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apr 03, 2025 am 12:03 AM

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.

See all articles