PHP8.2是PHP語言現代化過程中的一個重要的里程碑。除了令人興奮地新特性和改進之外,PHP8.2還簡化了語言,取消了對動態類別屬性的支持,在遇到某些非最優的ini配置時發出警告,並修復了一些影響PHP陣列排序和某些類型的字串轉換/編碼操作的遺留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 常數
#在
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
<strong>curl_upkeep</strong>
在
检索密码长度:<strong>openssl_cipher_key_length</strong>
在
openssl_cipher_key_length("CHACHA20-POLY1305"); // 32 openssl_cipher_key_length("AES-128-GCM"); // 16 openssl_cipher_key_length("AES-256-GCM"); // 32
重置记录的峰值内存使用量:<strong>memory_reset_peak_usage</strong>
这对于多次调用或迭代调用时很有用。
PHP8.2 中的弃用
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
安装和升级到PHP8.2
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發布了,快來看看有什麼改動!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具