PHP 7.4.0 發布 支持類型聲明

2021-01-18 西部數碼資訊門戶

PHP 7.4.0 發布了,此版本標誌著 PHP 7 系列的第四次特性更新。

PHP 7.4.0 進行了許多改進,並帶來了一些新特性,包括:

Typed Properties  類型屬性

類屬性現在支持類型聲明,以下示例將強制 $User-> id 只能分配 int 值,而 $User-> name 只能分配 string 值。

<?phpclass User { public int $id; public string $name;}?>

Arrow Functions  箭頭函數

箭頭函數提供了用於定義具有隱式按值作用域綁定的函數的簡寫語法。

<?php$factor = 10;$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);// $nums = array(10, 20, 30, 40);?>

將閉包傳遞給 array_map 或 array_filter 等函數時,它可以發揮極大的作用。

// A collection of Post objects $posts = [/* … */];$ids = array_map(fn($post) => $post->id, $posts);

Limited Return Type Covariance and Argument Type Contravariance  有限返回類型協變與參數類型逆變

僅當使用自動加載時,才提供完全協變/逆變支持。在單個文件中,只能使用非循環類型引用,因為所有類在被引用之前都必須可用。

<?phpclass A {}class B extends A {}class Producer { public function method(): A {}}class ChildProducer extends Producer { public function method(): B {}}?>

Unpacking Inside Arrays  打包內部數組

<?php$parts = ['apple', 'pear'];$fruits = ['banana', 'orange', ...$parts, 'watermelon'];// ['banana', 'orange', 'apple', 'pear', 'watermelon'];?>

Numeric Literal Separator  數值文字分隔符

數字文字可以在數字之間包含下劃線。

<?php6.674_083e-11; // float299_792_458; // decimal0xCAFE_F00D; // hexadecimal0b0101_1111; // binary?>

Weak References  弱引用

弱引用使程式設計師可以保留對對象的引用,不會阻止對象被銷毀。

Allow Exceptions from __toString()  允許從 __toString() 拋出異常

現在允許從 __toString() 引發異常,以往這會導致致命錯誤,字符串轉換中現有的可恢復致命錯誤已轉換為 Error 異常。

Opcache Preloading  Opcache 預加載

新增 Opcache 預加載支持。

此外還有一些棄用,以及從核心中刪除一些擴展,詳情查看:https://www.php.net/manual/zh/migration74.new-features.php#migration74.new-features.core.unpack-inside-array

本文原標題:PHP 7.4.0 發布

本文原地址:https://www.oschina.net/news/111724/php-7-4-0-released

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請儘快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯繫客服。電話:028-62778877-8261;郵箱:jenny@west.cn。本站原創內容未經允許不得轉載,或轉載時需註明出處::西部數碼資訊門戶 » PHP 7.4.0 發布 支持類型聲明

相關焦點

  • PHP7 版本各大類型特性
    php5.6 升級 php7.0 支持的特性標量類型聲明標量類型聲明 有兩種模式: 強制 (默認) 和 嚴格模式。function sumOfInts(int ...$ints){ return array_sum($ints);}var_dump(sumOfInts(2, '3', 4.1));php5.6不支持的。強制類型支持如下類型Class/interface name 該參數必須是instanceof給定的類或接口名稱。 PHP 5.0.0self 參數必須instanceof與定義方法的類別相同。
  • [圖]PHP 8.0重大版本更新正式發布:支持JIT編譯器 性能提升明顯
    PHP 8.0 引入了可選的 JIT 編譯器,將現有的 JSON 支持集成到核心(不再是可選),並增加了對屬性、聯合類型,靜態返回類型和其他附加語言的支持。
  • polarphp 0.0.1 alpha 發布:全新 PHP 運行時環境
    polarphp 提供的基礎設施直接面向終端,去掉SAPI從而更好的實現服務端環境。規範化OPCODE形成規範,從而提供一種類似pyc文件的預編譯機制。提供原生多線程支持,借鑑Java在多線程方面的編程範式。提供原生異步IO支持。提供針對字符串的unicode支持。
  • PHP日誌擴展 SeasLog-1.4.2 發布,支持錯誤與異常
    SeasLog-1.4.2 發布! SeasLog是一個輕量,高效,便捷,規範的PHP日誌擴展,精準的定位\精巧的設計,使它在PHP項目中逐步成為一個非常優秀的日誌工具.
  • 有安全研究者混入了 PHP 8.0 開發組!
    來源 | 代碼審計(ID:white-hat-note)經歷了近半年的alpha版本測試後,PHP在2020年11月26號正式發布了8.0版本:https://www.php.net/releases/8.0/en.php今天我們就來瀏覽一下PHP 8.0中出現的主要特性,以及它給我們安全研究人員帶來的挑戰。
  • window下安裝apache php8
    php81、PHP 8.0 引入了備受期待的 Just In Time (JIT) 編譯器,能夠進一步提高 PHP 腳本的執行速度2、PHP 8.0 合併了諸多性能優化3、JSON 支持現在被視為語言的核心部分,始終可用,而不是作為可選模塊4、支持 named 參數,因為它們能夠指定參數名稱而不是其確切順序5、支持類/屬性/函數/方法/參數/常量的結構化元數據的屬性
  • Peachpie 0.7.0 的新特性,.NET 平臺上的 PHP 編譯器
    Peachpie 0.7.0 發布了。Peachpie 是用於 .NET 平臺上的 PHP 編譯器。
  • PHP丨PHP基礎知識之數據類型之間相互轉換
    昨天剛講完PHP基礎知識數據類型,今天就來講講PHP數據類型的轉換。轉換變量或者值的類型,轉換成其他數據類型的方法主要分為兩大類:自動轉換和強制轉換。註:字符串、數字參與運算,字符串先轉換成數字;轉換後的數字從字符串開始的數值開始,不帶小數點則為int,否則為false;字符串"abcsd"直接轉換成0;整型轉化為浮點型,由於浮點型的精度範圍大於整型
  • Apache Felix Framework 4.0.0發布
    【IT168 資訊】OSGi 4.3通過昨天發布的Felix Framework 4.0.0被加入到到Apache Felix項目中。這次發布的版本與之前版本之間的關鍵區別就在於它通過了OSGi 4.3的兼容性測試。
  • php反序列化漏洞
    s:51:"的長度為19 而過濾php一個能吞掉3個字符串,所以我們要輸入7個php也就是吞掉21長度,而後面是19長度,所以我們加2個字符來補充 所以構造name=phpphpphpphpphpphpphpsign=12";s:4:"sign";s:3:"sjj";s:6:"number";s:4:"2222";}
  • (進階篇)使用PHP生成二維碼
    不能混合數據類型,數據必須經過UTF-8 URL-encoded  * @param int $widhtHeight 生成二維碼的尺寸設置  * @param string $EC_level 可選糾錯級別,QR碼支持四個等級糾錯,用來恢復丟失的、讀錯的、模糊的、數據。
  • php中函數禁用繞過的原理與利用
    影響範圍在於bash 1.14 – 4.3關鍵在於:目前的bash腳本是以通過導出環境變量的方式支持自定義函數,也可將自定義的bash函數傳遞給子相關進程。一般函數體內的代碼是不會被執行,但此漏洞會錯誤的將「{}」花括號外的命令進行執行。
  • php基礎訓練,3分鐘課堂
    接上一節,php基礎試題訓練,祝你快速掌握php內容! 錯誤 正確解析:php是一種區分大小寫的腳本語言!2、下面哪種類型的變量是浮點數,比如 3.14159 或 49.1? integer double boolean string解析:在php中,各種數據類型分別用——integer – 整型,double – 浮點型,boolean – 布爾型,string – 字符串來表示。
  • OpenCenter Beta2 發布,php開源用戶管理系統
    讓php開發人員只需專注業務模塊的開發,從用戶和後臺管理中解放出來。
  • Mix PHP V2.2 發布,與 go-micro 深度集成的 PHP 微服務開發框架
    Mix PHP 是一個基於 Swoole 開發的高性能 PHP 框架,從 2017 年開始經過多年發展收穫了很多中小型團隊的支持
  • PHP單元測試利器:PHPUNIT深入用法(二)
    $valueOne = 4;  $valueOne = 4;  $valueOne = 4;  而assertStringMatchesFormat可以讓用戶指定匹配的模式去判斷一個字符串是否符合要求,如 $this->assertStringMatchesFormat('%s',$testString);  這裡則判斷$testString是否是字符串類型,具體的可以參考phpunit手冊。
  • PHP的Mcrypt加密擴展知識了解
    在 PHP7 之前,這個擴展是隨 PHP 安裝包一起內置發布的,但是現在新版本的 PHP 中已經沒有了,需要使用這個擴展的話我們需要單獨安裝,並且在使用的時候也是會報出過時的警告的。所以,我們學習使用這些函數的時候,就需要使用 @ 來抑制錯誤信息。當然,之所以會對這套擴展發出過時警告,是因為 PHP 更加推薦使用 OpenSSL 來處理類似的加密能力。
  • PHP密碼加密機制(password_hash)(bcrypt 算法)
    password_hash支持的算法:PASSWORD_DEFAULT - 使用 bcrypt 算法 (PHP 5.5.0 默認)。注意,該常量會隨著 PHP 加入更新更高強度的算法而改變。所以,使用此常量生成結果的長度將在未來有變化。因此,資料庫裡儲存結果的列可超過60個字符(最好是255個字符)。
  • Zig 0.7.0 發布,想要替換 C 的程式語言
    Zig 0.7.0 已發布,這是一門通用程式語言,專為穩定性、可維護性和性能而設計,追求替代 C 語言在系統編程上的最佳地位。
  • php項目實戰:代碼講解之發布主題消息
    選擇php原因本次的代碼實例之準備在一個app中增加一個接口,該接口的功能是在app中發布一條主題,就和我們平時發布朋友圈或者寫一篇文章發表差不多。下面就一起來看看這樣的代碼如何寫吧public function actionEdit() //發布主題消息{$result = array("code" => 0,"msg" =>