php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:
PHP8.2是PHP語言現代化程序中的一個重要的里程碑。除了令人興奮地新特性和改進之外,PHP8.2還簡化了語言,取消了對動態類屬性的支援,在遇到某些非最優的ini設定時發出警告,並修復了一些影響PHP陣列排序和某些型別的字串轉換/編碼操作的遺留PHP行為。【推薦學習:】
PHP8.2解決了PHP型別系統的幾個缺點和限制,允許PHP應用採用更好的型別安全。包括新增了true型別,允許null和false作為獨立的型別使用,並支援DNF型別(泛型解析)。
PHP8.2支援分離正規化型別,現在可以進行組合聯合型別和交際型別,這可以定義宣告精確而富有表現力的引數、返回值和屬性。
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');
}
}
登入後複製
現在
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;
}
登入後複製
所有的屬性都會自動宣告城
在
在
trait Foo
{
public const CONSTANT = 1;
}
class Bar
{
use Foo;
}
var_dump(Bar::CONSTANT); // 1
var_dump(Foo::CONSTANT); // Error
登入後複製
我們經常會在引數或屬性中定義密碼、祕鑰或其他敏感資訊。當
比如下面的例子:
function passwordHash(#[\SensitiveParameter] string $password) {
debug_print_backtrace();
}
passwordHash('hunter2');
登入後複製
列印的內容如下:
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) {}
}
}
}
登入後複製
解析
將
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
登入後複製
重置記錄的峰值記憶體使用量:memory_reset_peak_usage
這對於多次呼叫或迭代呼叫時很有用。
PHP8.2也帶來了相當一部分的棄用。當語法、函數和特性被棄用時,PHP會發起一個棄用通知,該通知不應該中斷PHP程式,但會被記錄到錯誤紀錄檔中。
注意:PHP8.0 以後,PHP 的預設錯誤報告行為是E_ALL
PHP8.2中最值得注意的棄用之一就是棄用動態屬性。如果一個類屬性沒有宣告就被呼叫或賦值,就會退出程式。
class User {
public int $uid;
}
$user = new User();
$user->name = 'Foo';
登入後複製
這個可能會影響到很多的的PHP遺留程式,推薦的修復方法是在型別中宣告屬性。
對此也有例外用法,比如stdClass和它的子類將正常使用,__get和__set魔術方法將正常使用,或者宣告#AllowDynamicProperties。
其他一些棄用可以關注本站其他文章:
《PHP8.2 中字串變數解析的新用法》https://phpreturn.com/index/a628de16a2adf8.html
PHP 8.2現在可以在所有常規原始碼中下載/安裝:
Windows:編譯後的二進位制檔案可在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武器庫
更多程式設計相關知識,請存取:!!
以上就是PHP8.2釋出了,快來看看有什麼改動!的詳細內容,更多請關注TW511.COM其它相關文章!