PHP を 7.2 にアップグレードした後に知っておくべきこと

小云云
リリース: 2023-03-20 15:32:02
オリジナル
2586 人が閲覧しました

最近 PHP のバージョンが 7.1 から 7.2 にアップグレードされました。アップグレード後に注意する必要があることがいくつかあります。この記事が皆様のお役に立てれば幸いです。

アップグレード前バージョン:

PHP 7.1.14 (cli) (built: Feb  2 2018 08:42:59) ( NTS )Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.14, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
ログイン後にコピー

アップグレード後バージョン:

PHP 7.2.2 (cli) (built: Feb 24 2018 17:51:12) ( ZTS DEBUG )Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.2, Copyright (c) 1999-2018, by Zend Technologies
ログイン後にコピー

アップグレード後、いくつかのフレームワークで使用時に問題があることがわかりました。主な理由は、いくつかの機能が 7.2 以降に廃止されたことです。一般的なもの: 問題点:

1. each 関数が廃止されました:

以前のバージョンの記述:

<?php
    $array = array();
    each($array);

    // Deprecated:  The each() function is deprecated. This message will be suppressed on further calls
ログイン後にコピー

バージョン 7.2 では、each メソッドを置き換えるために foreach を使用できます。各メソッドを自分で変更して置き換えます:

<?php
    function func_new_each(&$array){
       $res = array();       $key = key($array);       if($key !== null){
           next($array); 
           $res[1] = $res['value'] = $array[$key];           $res[0] = $res['key'] = $key;
       }else{           $res = false;
       }       return $res;
    }
ログイン後にコピー

2. 無効なパラメータが渡されると、count() 関数は警告をスローします:

以前のバージョンの書き込み

<?php
    count('');    // Warning:  count(): Parameter must be an array or an object that implements Countable
ログイン後にコピー

バージョン 7.2 では、型の区別が厳密に適用されます。パラメータの型が間違っている場合は、警告が表示されるため、count を使用する必要があります。メソッドを使用するときはパラメータの値に注意してください。ただし、メソッドを自分で変更して置き換えることもできます (推奨されません):

<?php
    function func_new_count($array_or_countable,$mode = COUNT_NORMAL){
        if(is_array($array_or_countable) || is_object($array_or_countable)){            return count($array_or_countable, $mode);
        }else{            return 0;
        }
    }
ログイン後にコピー

3. create_function は放棄され、匿名関数に置き換えることができます:

以前のバージョンの記述:

<?php
    $newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');    echo "New anonymous function: $newfunc\n";    echo $newfunc(2, M_E) . "\n";    // outputs
    // New anonymous function: lambda_1
    // ln(2) + ln(2.718281828459) = 1.6931471805599

    // Warning This function has been DEPRECATED as of PHP 7.2.0. Relying on this function is highly discouraged.
ログイン後にコピー

バージョン 7.2 では、警告プロンプトが表示されますが、代わりに匿名関数に変更できます:

<?php
    $newfunc = function ($a,$b){
        return "ln($a) + ln($b) = " . log($a * $b);
    };    echo $newfunc(2, M_E) . "\n";
ログイン後にコピー

上記は次のとおりです。アップグレード後に一時的にいくつかの問題が発生しました。その他の関連する変更については、Lianjia 製品技術チームが作成した翻訳と整理を参照してください: PHP7.2 バージョン ガイド。

関連する推奨事項:

Linux での php7 インストール コマンド レコード linux ビュー php バージョン linux php アップグレード linux php mssq

以上がPHP を 7.2 にアップグレードした後に知っておくべきことの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!