首頁 後端開發 PHP7 總結PHP升級7.2之後需要注意的事情

總結PHP升級7.2之後需要注意的事情

Mar 21, 2021 pm 02:44 PM

總結PHP升級7.2之後需要注意的事情

最近升級了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
登入後複製

#推薦(免費):PHP7

升級完成後發現有幾個框架在使用時都出現了問題,主要原因集中在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版本中會提示過時,可以使用foreach替代each方法,也可以自己修改each方法替代:

<?php
    function func_new_each(&$array){
       $res = array();       $key = key($array);       if($key !== null){
           next($array); 
           $res[1] = $res[&#39;value&#39;] = $array[$key];           $res[0] = $res[&#39;key&#39;] = $key;
       }else{           $res = false;
       }       return $res;
    }
登入後複製

2、當傳遞一個無效參數時,count()函數將拋出warning警告:

先前版本寫法

<?php
    count(&#39;&#39;);    // 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(&#39;$a,$b&#39;, &#39;return "ln($a) + ln($b) = " . log($a * $b);&#39;);    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";
登入後複製

以上就是升級之後暫時遇到的幾個問題,其它相關修改可詳看鍊家產品技術團隊做的翻譯與整理:PHP7.2 版本指南

以上是總結PHP升級7.2之後需要注意的事情的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)