PHP 8.2 的 Alpha 測試已經開始

PHP 8.2 編程語言新分支的第一個 alpha 版本已經發布。 該版本計劃於 24 月 8.2 日發布。 已可用於測試或計劃在 PHP XNUMX 中實施的主要創新:

  • 添加了單獨的類型“false”和“null”,例如,可以使用它們來通過函數返回帶有錯誤或空值的完成標誌。 以前,“false”和“null”只能與其他類型結合使用(例如“string|false”),但現在它們可以單獨使用: }
  • 添加了將類標記為只讀的功能。 此類中的屬性只能設置一次,之後將無法更改。 以前,單個類屬性可以標記為只讀,但現在您可以立即為所有類屬性打開此模式。 在類級別指定“readonly”標誌還會阻止向類動態添加屬性。 readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = '錯誤'; // 錯誤:無法創建動態屬性 Post::$unknown
  • 在類中動態創建屬性的功能已被棄用(如上例中的“post->unknown”)。 在 PHP 9.0 中,訪問類中最初未定義的屬性將導致錯誤 (ErrorException)。 提供 __get 和 __set 方法來創建屬性的類或 stdClass 中的動態屬性將繼續保持不變,只有不存在的屬性的隱式工作才會停止,以保護開發人員免受隱藏錯誤的影響。 為了保持舊代碼正常工作,建議使用“#[AllowDynamicProperties]”屬性,允許使用動態屬性。
  • 提供了在發生錯誤時過濾堆棧跟踪輸出中的敏感設置的能力。 當有關發生的錯誤的信息自動發送到跟踪問題並向開發人員通知相關問題的第三方服務時,可能需要刪除某些信息。 例如,您可以從跟踪中排除包括用戶名、密碼和環境變量的參數。 函數測試( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } 測試('foo', '密碼', 'baz'); 致命錯誤:未捕獲異常:test.php 中出現錯誤:8 堆棧跟踪:#0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} 在test. php 中拋出在線8
  • 使用“${var}”和${(var)}”表達式將變量值替換為字符串的功能已被棄用。 保留了對常用“{$var}”和“$var”替換的支持。 例如:“你好{$world}”; 好的“你好$world”; 好的“你好${world}”; 已棄用:已棄用在字符串中使用 ${}
  • 可以通過“call_user_func($callable)”調用的部分支持的可調用對像已被棄用,但不支持以“$callable()”形式調用:“self::method”“parent::method”“static : :方法" ["self", "方法"] ["父級", "方法"] ["靜態", "方法"] ["Foo", "Bar::method"] [new Foo, "Bar: :method ”]
  • 實現了與區域設置無關的大小寫轉換。 像 strtolower() 和 strtoupper() 這樣的函數現在總是轉換 ASCII 範圍內字符的大小寫,就像將語言環境設置為“C”時一樣。

來源: opennet.ru

添加評論