php入門到就業(yè)線上直播課:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點擊使用
PHP8.2是PHP語言現(xiàn)代化進(jìn)程中的一個重要的里程碑。除了令人興奮地新特性和改進(jìn)之外,PHP8.2還簡化了語言,取消了對動態(tài)類屬性的支持,在遇到某些非最優(yōu)的ini配置時發(fā)出警告,并修復(fù)了一些影響PHP數(shù)組排序和某些類型的字符串轉(zhuǎn)換/編碼操作的遺留PHP行為?!就扑]學(xué)習(xí):PHP視頻教程】
系統(tǒng)改進(jìn)
PHP8.2解決了PHP類型系統(tǒng)的幾個缺點和限制,允許PHP應(yīng)用采用更好的類型安全。包括添加了true類型,允許null和false作為獨立的類型使用,并支持DNF類型(泛型解析)。
PHP8.2支持分離范式類型,現(xiàn)在可以進(jìn)行組合聯(lián)合類型和交際類型,這可以定義聲明精確而富有表現(xiàn)力的參數(shù)、返回值和屬性。
php8.2之前
class Foo { public function bar(mixed $entity) { if ((($entity instanceof A) && ($entity instanceof B)) || ($entity === null)) { return $entity; } throw new Exception('Invalid entity'); } }
現(xiàn)在
class Foo { public function bar((A&B)|null $entity) { return $entity; } }
支持
function alwaysReturnsFalse(): false {} function alwaysReturnsNull(): null {} function alwaysReturnsTrue(): true {}
其中
只讀類
readonly class User { public string $username; public string $uid; }
所有的屬性都會自動聲明城
新的隨機(jī)數(shù)擴(kuò)展
在
trait 常量
在
trait Foo { public const CONSTANT = 1; } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1 var_dump(Foo::CONSTANT); // Error
敏感參數(shù)支持
我們經(jīng)常會在參數(shù)或?qū)傩灾卸x密碼、秘鑰或其他敏感信息。當(dāng)
比如下面的例子:
function passwordHash(#[SensitiveParameter] string $password) { debug_print_backtrace(); } passwordHash('hunter2');
打印的內(nèi)容如下:
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) {} } } }
新的函數(shù)和類
解析
將
ini_parse_quantity('256M'); // 268435456
curl_upkeep
在
檢索密碼長度:openssl_cipher_key_length
在
openssl_cipher_key_length("CHACHA20-POLY1305"); // 32 openssl_cipher_key_length("AES-128-GCM"); // 16 openssl_cipher_key_length("AES-256-GCM"); // 32
重置記錄的峰值內(nèi)存使用量:memory_reset_peak_usage
這對于多次調(diào)用或迭代調(diào)用時很有用。
PHP8.2 中的棄用
PHP8.2也帶來了相當(dāng)一部分的棄用。當(dāng)語法、函數(shù)和特性被棄用時,PHP會發(fā)起一個棄用通知,該通知不應(yīng)該中斷PHP程序,但會被記錄到錯誤日志中。
注意:
PHP8.0 以后,PHP 的默認(rèn)錯誤報告行為是E_ALL
已棄用動態(tài)屬性
PHP8.2中最值得注意的棄用之一就是棄用動態(tài)屬性。如果一個類屬性沒有聲明就被調(diào)用或賦值,就會退出程序。
class User { public int $uid; } $user = new User(); $user->name = 'Foo';
這個可能會影響到很多的的PHP遺留程序,推薦的修復(fù)方法是在類型中聲明屬性。
對此也有例外用法,比如stdClass和它的子類將正常使用,__get和__set魔術(shù)方法將正常使用,或者聲明#AllowDynamicProperties。
其他一些棄用可以關(guān)注本站其他文章:
《
PHP8.2 中字串變量解析的新用法》https://phpreturn.com/index/a628de16a2adf8.html
安裝和升級到PHP8.2
PHP 8.2現(xiàn)在可以在所有常規(guī)源代碼中下載/安裝:
-
Windows:編譯后的二進(jìn)制文件可在windows.php.net
-
Ubuntu/Debian: PHP 8.2可用ondrej/phpPPA
-
Fedora/RHEL/CentOS/Alma/Rocky:可以在Remi的源中獲取
-
Mac OS: PHP 8.2可以通過Homebrew安裝shivammathur/homebrew-php利用.
-
Docker:可以通過8.2*版本獲取PHP 8.2
原文地址:https://phpreturn.com/index/a639285aa925ed.html
原文平臺:PHP武器庫