首頁 > 後端開發 > PHP7 > 主體

一招搞定PHP5到PHP7的注意事項

醉折花枝作酒筹
發布: 2023-02-18 06:04:01
轉載
3214 人瀏覽過

這篇文章跟大家介紹一下從PHP5到PHP7的注意事項。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

一招搞定PHP5到PHP7的注意事項

PHP7是大勢所趨了。 PHP7有更多的新特性,更好的效能,更高的速度。並且,從今年8月7日開始發行PHP7.0的beta3 即將發布的PHP7 的RC1版本。腳步越來越近,有更多的人來學習PHP7的新特性。 PHP學院將對PHP7的新特性進行連載。

並且,現在國內PHPer中喜歡嚐新鮮的人一些人,已經安裝好了PHP7。我們來看看PHP7 到底有哪些新特性。

今天我們來講解的是PHP提倡的一些風格,並且將原有PHP4當中的一些風格進行了禁用。

1,PHP5發行的時候為了討好ASP程式設計師,PHP準備了asp_tags全部被禁止

在未來沒有<%  %> 這種風格,PHP也不再支持這種風格的聲明。

<script language="php"></script>
登入後複製

2,PHP4的語法風格中的某些東西將被,例如建構子的用法,會在新的PHP7中完全被拋棄。 PHP7將會提示一個: E_DEPRECATED的錯誤提示。

<?php
class foo {
    //方法名类名相同的构造函数的用法不再兼容     
    function foo() {         
        echo &#39;I am the constructor&#39;;     
    } 
  }
?>
登入後複製

1. define定義常數不僅僅只支援標量,還支援了數組

<?php

define(&#39;PHPXY&#39;, array(
    &#39;凤姐&#39;,
    &#39;芙蓉姐姐&#39;,
    &#39;杨幂是臭脚&#39;
));

echo PHPXY[1]; // 输出的结果是“芙蓉姐姐”
?>
登入後複製

2.比較的時候支援<=> 可以比較字串,數組,整型。

<?php

// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
登入後複製

評:我們認為實際使用者不大,在實際工作中使用量不會很高

#3.在PHP7 中支援了函數的強制參數類型指定

<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
    return array_sum($ints);
}

var_dump(sumOfInts(2, &#39;3&#39;, 4.1));

//本例中会输出9,你想想为什么哟?——因为强制规定为了整型
登入後複製

評:function funcName(... 參數) 是PHP5.6開始支援的。不要認為是PHP7裡的知識點

4. 返回類型也在強制進行規定

function arraysSum(array ...$arrays): array
{
    return array_map(function(array $array): int {
        return array_sum($array);
    }, $arrays);
}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
登入後複製

5. 新建了call方法在外部來調用,更短的方式將匿名函數,追加進對向中且完成呼叫

class A {private $x = 1;}

// Pre PHP 7 code
$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, &#39;A&#39;); // intermediate closure
echo $getX();

// PHP 7+ code
$getX = function() {return $this->x;};
echo $getX->call(new A);
登入後複製

6. 成員方法中也可以規定必須要傳回某個類別類型

class A {}
class B extends A {}

class C
{
    public function test() : A
    {
        return new A;
    }
}
登入後複製

PHP7的刪除的一些函數是我們必須的.

PHP手冊中,為了專門應付大家的升級,為大家將PHP7中刪除的一些函數進行了說明與整理。如果你在專案中使用到了這些函數,請整個專案進行查找,修改。

1. call_user_method() 和call_user_method_array()

2. mcrypt_generic_end() alias in favor of mcrypt_generic_deinit()## 

3.##ofrypt_ecb(),cmcpt_ecb(),

#3.cmcpt , mcrypt_cfb() and mcrypt_ofb() 有利於mcrypt_decrypt() 的參數MCRYPT_MODE_*

4.棄用datefmt_set_timezone_id() 和IntlDateFormatter::setTimeZoneID() 有利於datefForm;

##5. set_magic_quotes_runtime() 和它的別名函數magic_quotes_runtime()

6. set_socket_blocking() 有利於它的別名函數 stream_set_blocking()

7. 來自於fast-fast-fast-fast-fast cgi的dl()

8.   T1Lib 支援刪除,所以刪除:imagepsbbox(), imagepsencodefont(), imagepsextendedfont(), imagepsfreefont(), imagepsloadfont(), imagepsslantfont(), ageps

原本的PHP7 新特性的連載計畫出現了一點點小的耽擱,我們將PHP7 RC1版本的官方新聞通稿進行了翻譯。這是大家等了很久的PHP7.0 RC1版。

所謂RC版本,就是即將正式推行的版本。 (Release Candidate) 用在軟體上就是候選版本。系統平台上就是發行候選版本。 RC版不會再加入新的功能了,主要著重在調試。

PHP開發團隊宣布PHP 7.0.0 RC 1的版本是即將可用的版本。你可以詳細的測試,並將將遇到的問題,報告給PHP的BUG 追蹤系統。

BUG測試提交的位址為:https://bugs.php.net/

1. PHP7 的速度高達php 5.6 兩倍之巨

2. 更好的支援64位元作業系統

3. 更多的錯誤支援和新的錯誤捕獲

4. 刪除一些不支援的函數和不支援的SAPIs和擴充

5. 空白合併運算子( ??)

6. 綜合比較運算子(<=>)

7. 傳回型別宣告

8 .標量類型宣告

9 .匿名類別

PHP刪除了一些函數,其中是嚇人的是兩個:

1. ereg_* 系列的正規函數

2. mysql_* 系列的資料庫連接函數

PHP7全面刪除Mysql擴充支持,原本的mysql_*系列函數將在mysql中不再得到支持。所以說,如果你的應用系統還是使用的是mysql_*系列的函數來連接資料庫,請盡快升級你的mysql系列的函數。

我們來看看,PHP7 刪除的擴充到底有哪些:

    1. ereg
  • ##2.mssql
  • 3. mysql
  • 4. sybase_ct
  • 替代處理與解決方案:
一、 如果你要連接微軟的sql server資料庫請使用PDO方案來代規

二、 如果你使用的mysql系列函數擴充來連接資料庫,請採用效率更高的mysql_nd系列函數。他有更高的效率

三、 如果你採用的是ereg 系列,盡快改吧。

四、sybase_ct 全面改為sybase*系列吧

很多朋友都不知道什麼是SAPI,也不知道SAPI與PHP的關係,本章在了解PHP7 刪除了哪些SAPI的同時,你可以了解到更深入的PHP的內部處理機制,並且了解到有哪些SAPI是被刪除 

SAPI指的是PHP具體應用的編程接口, 就像PC一樣,無論安裝哪些操作系統,只要滿足了PC的接口規範都可以在PC上正常運行, PHP腳本要執行有很多種方式,透過Web伺服器,或直接在命令列下,也可以嵌入在其他程式中。

  • aolserver

  • apache

  • apache_hooks

  • # #apache2filter
  • caudium
  • #continuity
  • ##isapi
  • #milter

nsapi

#phttpd############pi3web####### #####roxen############thttpd#############tux############webjames############ #######上面的這些SAPI們將不會支援了。 ######推薦學習:###php影片教學######

以上是一招搞定PHP5到PHP7的注意事項的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板