目次
型システムの改善
ClassPHP 8.1 では、読み取り専用プロパティのサポートが追加されました。読み取り専用型は初期化中に 1 回だけ割り当てることができ、その後の変更は防ぐ。
拡張機能PHP の歴史を通じて、PHP はさまざまな乱数ジェネレーター (RNG) をサポートしてきました。各ジェネレーターには、パフォーマンス、使用シナリオ、セキュリティが異なります。 PHP 8.2 は、すべての RNG 関連関数を
PHP 8.2 では、Trait で定数を定義できます。もちろん、Traits に直接アクセスすることはできませんが、Traits 内の定数は継承されるとクラス定数になります。
PHP 8.2 では、エラーおよびスタック情報の実際の値を非表示にするために使用される
ini_parse_quantity
ini_parse_quantity('256M'); // 268435456
ログイン後にコピー
CURL 接続を維持する" >ini_parse_quantity
ini_parse_quantity('256M'); // 268435456
ログイン後にコピー
CURL 接続を維持する
#PHP 8.2 Curl 拡張機能の curl_upkeep
获取加密密钥长度 openssl_cipher_key_length
重置记录的内存使用峰值 memory_reset_peak_usage
PHP 8.2 弃用情况
弃用动态属性
弃用 utf8_encodeutf8_decode 函数
弃用 ${var} 字符串格式
ホームページ バックエンド開発 PHP8 PHP 8.2 のアップデートの進行状況に関する簡単な説明

PHP 8.2 のアップデートの進行状況に関する簡単な説明

Dec 15, 2022 am 11:43 AM
php

PHP 8.2 では、型システムの改善、読み取り専用の `readonly` クラス、機密パラメータの非表示サポート、新しいランダム `random` 拡張機能、および PHP の簡素化と最新化を含む多くの機能が導入されています。それを見てみましょう。 , 皆様のお役に立てれば幸いです。

PHP 8.2 のアップデートの進行状況に関する簡単な説明

推奨学習: 「PHP ビデオ チュートリアル

PHP 8.2 では型システムが改善され、読み取り専用です読み取り専用 クラス、機密パラメータの非表示サポート、新しいランダム random 拡張機能、および PHP の簡素化と最新化を含む多くの機能。

PHP 8.2 は、PHP の最新化における重要なマイルストーンです。 PHP 8.2 は、魅力的な新機能と改善に加えて、動的プロパティのサポートを廃止し、INI 構成値に関する警告を発行し、配列の並べ替えと文字列変換に関する多くの従来の動作を修正することによって機能します。

型システムの改善

PHP 8.2 では、元の型システムのいくつかの欠点と制限が解決され、PHP プロジェクトの型安全性が向上します。これには、true 型のサポートの追加、nullfalse を独立した型として使用できるようにすること、および DNF 型のサポートの追加が含まれます。

素正規形 (DNF) 型のサポート - PHP 8.2 では、開発者は共用体 union 型 (PHP 8.0) と共通部分 intersection 型を組み合わせることができます。 (PHP 8.1) これにより、より正確なパラメーター、戻り値、およびプロパティの型を宣言できるようになります。

function process((HTMLRequest & RequestInterface) | APIRequest $request) {
 // ...
}
ログイン後にコピー

(HTMLRequest & RequestInterface) | APIRequest 型宣言は、$requestAPIRequest のインスタンスである必要があることを示しています。 ##HTMLRequestRequestInterface を実装します。

一方、

truefalse の独立型を追加した後、固定戻り値の bool 型を次のように変更できます。特定の 1 つのタイプ。

function alwaysReturnsFalse(): false {}

function alwaysReturnsNull(): null {}

function alwaysReturnsTrue(): true {}
ログイン後にコピー

これまでは、null 許容パラメータを

string|null の形式で定義できましたが、PHP 8.2 では null## を使用できるようになります。直接 # 独立したタイプとして。 Read-only

readonly

ClassPHP 8.1 では、読み取り専用プロパティのサポートが追加されました。読み取り専用型は初期化中に 1 回だけ割り当てることができ、その後の変更は防ぐ。

そして、PHP 8.2 では、読み取り専用属性が読み取り専用クラスに拡張されています。クラスが読み取り専用として宣言されると、そのすべてのプロパティが自動的に読み取り専用として宣言されます。さらに、読み取り専用クラスのすべてのプロパティに型宣言があることが保証されます。

// PHP 8.2
readonly class User {
	public string $username;
	public int $uid;
}

// PHP 8.1 等效写法
class User {
	public readonly string $username;
	public readonly int $uid;
}
ログイン後にコピー

新しいランダム

random

拡張機能PHP の歴史を通じて、PHP はさまざまな乱数ジェネレーター (RNG) をサポートしてきました。各ジェネレーターには、パフォーマンス、使用シナリオ、セキュリティが異なります。 PHP 8.2 は、すべての RNG 関連関数を

random

という名前の新しい拡張機能に再構築します。

random

この拡張機能は、同じ機能を提供しながら既存の API との互換性を維持しているため、rand mt_rand random_bytes random_int およびその他の関数は、変更せずに引き続き動作します。しかし、random 拡張機能は、モジュール式アーキテクチャで乱数を生成するための新しいオブジェクト指向 API を提供するため、RNG のシミュレーションと新しい RNG の提供が容易になり、テスト プロジェクトがより安全かつ便利になります。 Trait の定数

PHP 8.2 では、Trait で定数を定義できます。もちろん、Traits に直接アクセスすることはできませんが、Traits 内の定数は継承されるとクラス定数になります。

trait FooBar {
	const FOO = 'foo';
	private const BAR = 'bar';
	final const BAZ = 'baz';
	final protected const QUX = 'qux';
}

class Test {
	use FooBar;
}

echo Test::BAZ; // 'bar'
ログイン後にコピー

トレイト内の定数は、他のトレイトまたはクラスの定数と競合できないことに注意してください。

機密パラメータの非表示のサポート

PHP 8.2 では、エラーおよびスタック情報の実際の値を非表示にするために使用される

#[\SensitiveParameter]

パラメータ アノテーションが追加されました。 パスワード、秘密キー、またはその他の機密情報を受け入れる関数は、

#[\SensitiveParameter]

を使用して特定の値を非表示にすることができます。エラーまたは例外が発生した場合、対応する値は \SensitiveParameterValue オブジェクトに置き換えられます。 password_hash

password_verify などの PHP の組み込み関数には、#[\SensitiveParameter] パラメーターの注釈が付けられます。

- function passwordHash(string $password)  {

+ 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 容量の解析

ini_parse_quantity
ini_parse_quantity('256M'); // 268435456
ログイン後にコピー
CURL 接続を維持する

curl_upkeep

#PHP 8.2 Curl 拡張機能の curl_upkeep

関数は、基礎となる Curl ライブラリをトリガーして必要なタスクを実行しますCurl 接続をアクティブに保つには、この関数の最も一般的な使用例は、

curl_upkeep 関数を定期的に呼び出して HTTP 永続接続 (キープアライブ) を維持することです。

获取加密密钥长度 openssl_cipher_key_length

在 PHP 8.2 OpenSSL 中,有一个名为 openssl_cipher_key_length 的新函数,它返回任何受支持的 OpenSSL 密码所需的密钥长度(以字节为单位)。

此功能消除了对 OpenSSL 密码操作所需密钥长度进行硬编码的需要。

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

PHP 8.2 添加了一个名为 memory_reset_peak_usage 的新函数,用于重置由 memory_get_peak_usage 函数返回的峰值内存使用量。

这对于多次调用或迭代一个动作并且需要记录每次调用的峰值内存使用量的应用程序很有帮助。 如果没有 memory_reset_peak_usage 函数重置内存使用情况,memory_get_peak_usage 将会返回整个运行过程中的绝对峰值内存使用情况。

PHP 8.2 弃用情况

PHP 8.2 也带来了相当一部分弃用。当语法、函数或特性被弃用时,PHP 会发出弃用通知,该通知不会中断 PHP 应用,但会记录到错误日志中。

弃用动态属性

PHP 8.2 中最值得注意的弃用之一是它弃用了动态声明的类属性。虽然可以忽略错误,但建议在类中声明类属性,加上类型声明就更好了。

class User {
	public int $uid;
}

$user = new User();
$user->name = 'Foo';
ログイン後にコピー
Deprecated: Creation of dynamic property User::$name is deprecated in ... on
ログイン後にコピー

许多古老的 PHP 应用程序很可能会受到此更改的影响,因为它们在扩展时往往不声明类属性,或者随着变化多年来不断发展。

当然了,选择忽略或例外也是存在的:

  • 匿名类及其子类(stdClass

  • 具有 __get__set 魔术方法的类

  • 具有 #[AllowDynamicProperties] 注解的类

弃用 utf8_encodeutf8_decode 函数

PHP 8.2 终于弃用这两名字跟实际效果不一致的函数,虽然名为 utf8 但实际上是 Latin 1 (ISO-8859-1)。

大多数使用这些函数的 PHP 项目往往没有意识到这个问题。推荐的替代品包括 mbstringiconvintl 扩展以提供更好的功能。

弃用 ${var} 字符串格式

PHP 一直支持使用 foo {$bar} 模式的字符串变量插值,以及将美元符号放在大括号外的替代语法 foo ${bar}

在 PHP 8.2 中,将美元符号放在花括号外的替代语法已弃用。

已弃用 推荐替代
Hello ${name} Hello {$name}
Hello {var} Hello {$$var}

此外,PHP 8.2 还弃用了一些部分支持的 callable 模式和 Mbstring 扩展对 Base64、Uuencode、QPrint 和 HTML 实体编码的处理。

推荐学习:《PHP视频教程

以上がPHP 8.2 のアップデートの進行状況に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles