ホームページ  >  記事  >  バックエンド開発  >  PHP8.2 がリリースされました。どのような変更があるのか​​見に来てください。

PHP8.2 がリリースされました。どのような変更があるのか​​見に来てください。

青灯夜游
青灯夜游転載
2022-12-09 21:05:366176ブラウズ

PHP8.2 がリリースされました。どのような変更があるのか​​見に来てください。

PHP8.2 は、PHP 言語の最新化プロセスにおける重要なマイルストーンです。 PHP 8.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 を独立した型としてサポートしています (if bool) は、常に同じである場合に宣言するために使用できます。

function alwaysReturnsFalse(): false {}

function alwaysReturnsNull(): null {}

function alwaysReturnsTrue(): true {}

null は、以前のバージョンでは共用体型宣言で使用できましたが、現在は独立して使用できるようになりました。

読み取り専用クラス

PHP8.1readonly 属性宣言を追加しました。 readonly プロパティは 1 回のみ設定でき、PHP はスコープ内の変更を禁止します。

PHP8.2readonly 宣言をさらに使用するには、クラスを readonly として宣言します。クラスが readonly と宣言されると、そのすべてのプロパティが自動的に readonly と宣言されます。さらに、このクラスは動的プロパティを使用できないため、すべてのプロパティが定義されていることを確認します。

readonly class User {
    public string $username;
    public string $uid;
}

すべての属性は自動的に readonly と宣言されます。

新しい乱数拡張機能

PHPの歴史的な開発では、さまざまな乱数ジェネレータをサポートしており、さまざまなレベルのパフォーマンスを備えています。さまざまなユースケースに対応しており、セキュリティアプリケーションに適しています。 PHP8.2 はさらに一歩進んで、すべての乱数関連関数を random という拡張機能にリファクタリングします。新しい拡張機能は既存のインターフェイスの使用を中断するものではないため、既存の randmt_rand 関数は変更せずに引き続き動作します。また、プラグイン可能なアーキテクチャで乱数を生成するためのオブジェクト インターフェイスも提供するため、乱数ジェネレーターのシミュレーションや新しい乱数ジェネレーターの提供が容易になり、アプリケーションが安全でテストしやすくなります。

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维持活动:<strong>curl_upkeep</strong>

PHP8.2中,curl扩展会触发底层curl库来运行必要任务,以保持curl连接存活。最常见的用法就是定期调用curl_upkeep来实现http持久连接(keep-alive

检索密码长度:<strong>openssl_cipher_key_length</strong>

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

重置记录的峰值内存使用量:<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 = &#39;Foo&#39;;

这个可能会影响到很多的的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武器库

更多编程相关知识,请访问:编程教学!!

以上がPHP8.2 がリリースされました。どのような変更があるのか​​見に来てください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はphpreturn.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。