您好,登錄后才能下訂單哦!
這篇文章主要介紹了PHP8.2有哪些改進的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇PHP8.2有哪些改進文章都會有所收獲,下面我們一起來看看吧。
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。
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
關于“PHP8.2有哪些改進”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“PHP8.2有哪些改進”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。