首頁 後端開發 PHP7 一招搞定PHP5到PHP7的注意事項

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

Jun 08, 2021 am 09:15 AM
php5 php7

這篇文章跟大家介紹一下從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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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)

php5和php8有什麼差別 php5和php8有什麼差別 Sep 25, 2023 pm 01:34 PM

php5和php8的差異在效能、語言結構、型別系統、錯誤處理、非同步程式設計、標準函式庫函數和安全性等方面。詳細介紹:1、效能提升,PHP8相對於PHP5來說在效能方面有了巨大的提升,PHP8引入了JIT編譯器,可以對一些高頻執行的程式碼進行編譯和最佳化,從而提高運行速度;2、語言結構改進,PHP8引入了一些新的語言結構和功能,PHP8支援命名參數,允許開發者透過參數名稱而不是參數順序等等。

php7.0安裝了插件還是顯示未安裝怎麼辦 php7.0安裝了插件還是顯示未安裝怎麼辦 Apr 02, 2024 pm 07:39 PM

解決 PHP 7.0 中插件未顯示已安裝問題的方法:檢查插件配置並啟用插件。重新啟動 PHP 以套用配置變更。檢查插件檔案權限,確保其正確。安裝遺失的依賴項,以確保插件正常運作。如果其他步驟都失敗,則重建 PHP。其他可能原因包括外掛程式版本不相容、載入錯誤版本或 PHP 配置問題。

php7.0怎麼安裝mongo擴展 php7.0怎麼安裝mongo擴展 Nov 21, 2022 am 10:25 AM

php7.0安裝mongo擴充的方法:1、建立mongodb使用者群組和使用者;2、下載mongodb原始碼包,並將原始碼包放到“/usr/local/src/”目錄下;3、進入“src/”目錄;4、解壓縮原始碼包;5、建立mongodb檔案目錄;6、將檔案複製到「mongodb/」目錄;7、建立mongodb設定檔並修改設定即可。

php5如何改80端口 php5如何改80端口 Jul 24, 2023 pm 04:57 PM

php5改80埠的方法:1.編輯Apache伺服器的設定檔中的連接埠號碼;2、輯PHP的設定檔以確保PHP在新連接埠上運作;3、重新啟動Apache伺服器,PHP應用程式將開始在新的連接埠上運行。

php7檢測tcp埠不好用怎麼解決 php7檢測tcp埠不好用怎麼解決 Mar 22, 2023 am 09:30 AM

在php5中,我們可以使用fsockopen()函數來偵測TCP埠。這個函數可以用來開啟一個網路連接和進行一些網路通訊。但是在php7中,fsockopen()函數可能會遇到一些問題,例如無法開啟連接埠、無法連接到伺服器等。為了解決這個問題,我們可以使用socket_create()函數和socket_connect()函數來偵測TCP埠。

PHP 伺服器環境常見問題指南:快速解決常見難題 PHP 伺服器環境常見問題指南:快速解決常見難題 Apr 09, 2024 pm 01:33 PM

PHP伺服器環境常見的解決方法包括:確保已安裝正確的PHP版本和已複製相關檔案到模組目錄。暫時或永久停用SELinux。檢查並配置PHP.ini,確保已新增必要的擴充功能和進行正確設定。啟動或重新啟動PHP-FPM服務。檢查DNS設定是否有解析問題。

php7.0怎麼安裝部署 php7.0怎麼安裝部署 Nov 30, 2022 am 09:56 AM

php7.0安裝部署的方法:1、到PHP官網下載與本機系統對應的安裝版本;2、將下載的zip檔案解壓縮到指定目錄;3、開啟命令列窗口,在「E:\php7」目錄下運行“php -v”命令即可。

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

See all articles