站長資訊網
        最全最豐富的資訊網站

        PHP8.2發布了,快來看看有什么改動!

        PHP8.2發布了,快來看看有什么改動!

        php入門到就業線上直播課:進入學習
        Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

        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;     } }
        登錄后復制

        支持truefalse作為獨立的類型,如果bool始終相同的時候可以用它來聲明。

        function alwaysReturnsFalse(): false {}  function alwaysReturnsNull(): null {}  function alwaysReturnsTrue(): true {}
        登錄后復制

        其中null的類型在之前的版本中就可以在聯合類型聲明中使用,現在可以獨立使用了。

        只讀類

        PHP8.1增加了一個readonly的屬性聲明。一個readonly的屬性只能設置一次,并且PHP會阻止任何作用域內的修改。

        PHP8.2readonly聲明進行更進一步的使用,可以將類聲明為readonly。當一個類被聲明為readonly,它的所有屬性都會自動聲明readonly。此外,這個類不能使用動態屬性,以確保所有的屬性都是有定義的。

        readonly class User {     public string $username;     public string $uid; }
        登錄后復制

        所有的屬性都會自動聲明城readonly

        新的隨機數擴展

        PHP的歷史發展中,它支持各種各樣的隨機數生成器,他們有不同程度的性能和不同的用例,并且適合安全應用程序。PHP8.2更進一步,將所有與隨機數相關的功能重構為一個名為random的擴展。新的擴展不會破壞任何現有的接口使用,因此現有的randmt_rand函數將繼續工作,不需要任何更改。它還提供了一個對象接口,用可插拔的體系生成隨機數,因此很容易模擬隨機數生成器并提供新的隨機數生成器,從而市PHP應用程序安全且易于測試。

        trait常量

        PHP8.2中,可以在trait中聲明常量。trait不能直接訪問,但當類使用trait時,這些常量就變成了類的常量。

        trait Foo {     public const CONSTANT = 1; }  class Bar {     use Foo; }  var_dump(Bar::CONSTANT); // 1 var_dump(Foo::CONSTANT); // Error
        登錄后復制

        敏感參數支持

        PHP8.2新增了一個內置參數屬性命名:#[SensitiveParameter]。能夠使PHP在堆棧跟蹤和錯誤消息中隱藏掉實際值。

        我們經常會在參數或屬性中定義密碼、秘鑰或其他敏感信息。當PHP發生錯誤時,這些值會被記錄下來。顯示到屏幕上或者記錄到日志中。這樣人們就能通過這些方式得到敏感數據。

        比如下面的例子:

        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) {}    }  } }
        登錄后復制

        hunter2不會被打印出來。

        新的函數和類

        解析INI數量值:ini_parse_quantity

        PHP ini值識別成字節。

        ini_parse_quantity('256M'); // 268435456
        登錄后復制

        curl維持活動:curl_upkeep

        PHP8.2中,curl擴展會觸發底層curl庫來運行必要任務,以保持curl連接存活。最常見的用法就是定期調用curl_upkeep來實現http持久連接(keep-alive

        檢索密碼長度:openssl_cipher_key_length

        PHP8.2 OpenSSL中,有一個名為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中的棄用

        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

        PHP8.2發布了,快來看看有什么改動!

        PHP8.2發布了,快來看看有什么改動!

        原文地址:https://phpreturn.com/index/a639285aa925ed.html

        原文平臺:PHP武器庫

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲国产精品无码久久久久久曰 | 国产精品99无码一区二区| 中文精品99久久国产| 2021国产三级精品三级在专区| 国产麻豆精品久久一二三| 亚洲精品国产精品国自产观看 | 国产精品无码不卡一区二区三区| 国产乱码精品一区二区三区中文 | 国产成人精品曰本亚洲79ren | 91精品无码久久久久久五月天| 51视频国产精品一区二区| 久久国产热精品波多野结衣AV| 亚洲精品无码午夜福利中文字幕| 欧美精品福利在线视频| 国产福利电影一区二区三区,欧美国产成人精品一 | 亚洲国产成人久久精品99 | 99精品伊人久久久大香线蕉| 黑人精品videos亚洲人| 国产suv精品一区二区33| 无码精品人妻一区二区三区免费看 | 国产精品多人p群无码| 欧美精品欧美人与动人物牲交| 中文字幕无码精品三级在线电影 | 色偷偷88欧美精品久久久| 国产亚洲精品不卡在线| 永久免费精品视频| 午夜精品视频在线| 欧美日韩精品乱国产538| 国产精品1区2区| 久久久国产精品网站| 精品在线免费观看| 日本精品卡一卡2卡3卡四卡 | 99精品国产丝袜在线拍国语| 国产精品揄拍100视频| 国产成人精品高清在线观看93| 91视频精品全国免费观看| 500av大全导航精品| 国产成人亚洲合集青青草原精品| 99国产精品久久| 久久91综合国产91久久精品| 久久青青草原精品影院|