您現在的位置: 365建站網 > 365學習 > php7和php5區別對比 不同之處和運行效率比較

php7和php5區別對比 不同之處和運行效率比較

文章來源:365jz.com     點擊數:1917    更新時間:2018-11-04 08:01   參與評論

PHP5到php7官方升級日志說明:

PHP 5.3

添加了命名空間的支持.


添加了靜態晚綁定支持.


添加了跳標簽支持.


添加了原生的閉包(Lambda/匿名函數)支持.


新增了兩個魔術方法, __callStatic 和 __invoke.


添加了 Nowdoc 語法支持, 類似于 Heredoc 語法, 但是包含單引號.


使用 Heredoc 來初始化靜態變量和類屬性/常量變為可能.


可使用雙引號聲明 Heredoc, 補充了 Nowdoc 語法.


可在類外部使用 const 關鍵詞聲明 常量.


三元運算操作符有了簡寫形式: ?:.


HTTP 流包裹器將從 200 到 399 全部的狀態碼都視為成功。


動態訪問靜態方法變為可能.


異??梢员粌惹?


新增了循環引用的垃圾回收器并且默認是開啟的.


mail() 現在支持郵件發送日志. (注意: 僅支持通過該函數發送的郵件.)


PHP 5.4

新增支持 traits 。


新增短數組語法,比如 $a = [1, 2, 3, 4]; 或 $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]; 。


新增支持對函數返回數組的成員訪問解析,例如 foo()[0] 。


現在 閉包 支持 $this 。


現在不管是否設置 short_open_tag php.ini 選項,<?= 將總是可用。


新增在實例化時訪問類成員,例如: (new Foo)->bar() 。


現在支持 Class::{expr}() 語法。


新增二進制直接量,例如:0b001001101 。


改進解析錯誤信息和不兼容參數的警告。


SESSION 擴展現在能追蹤文件的 上傳進度 。


內置用于開發的 CLI 模式的 web server 。


PHP5.5

新增 Generators


新增 finally 關鍵字


foreach 現在支持 list()


empty() 支持任意表達式


array and string literal dereferencing ?


新的密碼哈希 API


改進 GD


PHP5.6

使用表達式定義常量


使用 ... 運算符定義變長參數函數


使用 ... 運算符進行參數展開


使用 ** 進行冪運算


use function 以及 use const


phpdbg


默認字符編碼


php://input 是可重用的了


大文件上傳(現在可以支持大于 2GB 的文件上傳)


GMP 支持運算符重載


使用 hash_equals() 比較字符串避免時序攻擊


__debugInfo()


gost-crypto 散列算法


SSL/TLS 提升


pgSQL 異步支持


PHP7.0

標量類型聲明


返回值類型聲明


null合并運算符


太空船操作符(組合比較符)


通過 define() 定義常量數組


匿名類


Unicode codepoint 轉譯語法


Closure::call()


為unserialize()提供過濾


IntlChar


預期


Group use declarations


生成器可以返回表達式


Generator delegation


整數除法函數 intp()


會話選項


preg_replace_callback_array()


CSPRNG Functions


可以使用 list() 函數來展開實現了 ArrayAccess 接口的對象


其他特性


PHP7.1

可為空(Nullable)類型


Void 函數


Symmetric array destructuring


類常量可見性


iterable 偽類


多異常捕獲處理


list()現在支持鍵名


支持為負的字符串偏移量


ext/openssl 支持 AEAD


通過 Closure::fromCallable() 將callables轉為閉包


異步信號處理


HTTP/2 server push support in ext/curl


php7和php5區別對比 不同之處和運行效率比較


1、php標量類型和返回類型聲明

#主要分為兩種模式,強制性模式和嚴格模式
declare(strict_types=1)
#1表示嚴格類型校驗模式,作用于函數調用和返回語句;0表示弱類型校驗模式。


2、NULL合并運算符

$site = isset($_GET['site']) ? $_GET['site'] : 'wo';
#簡寫成
$site = $_GET['site'] ??'wo';


3、組合預算符

// 整型比較
print( 1 <=> 1);print(PHP_EOL);
print( 1 <=> 2);print(PHP_EOL);
print( 2 <=> 1);print(PHP_EOL);
print(PHP_EOL); // PHP_EOL 為換行符
//結果:
0
-1


4、常量數組

// 使用 define 函數來定義數組
define('sites', [
   'Google',
   'Jser',
   'Taobao'
]);
print(sites[1]);


5、匿名類

interface Logger { 
   public function log(string $msg); 
} 
class Application { 
   private $logger; 
   public function getLogger(): Logger { 
      return $this->logger; 
   } 
   public function setLogger(Logger $logger) { 
      $this->logger = $logger; 
   }   
} 
$app = new Application; 
// 使用 new class 創建匿名類 
$app->setLogger(new class implements Logger { 
   public function log(string $msg) { 
      print($msg); 
   } 
}); 
$app->getLogger()->log("我的第一條日志");


6、Closure::call()方法增加,意思向類綁定個匿名函數

<?php 
class A { 
    private $x = 1; 
} 
// PHP 7 之前版本定義閉包函數代碼 
$getXCB = function() { 
    return $this->x; 
}; 
// 閉包函數綁定到類 A 上 
$getX = $getXCB->bindTo(new A, 'A');  
echo $getX(); 
print(PHP_EOL); 
// PHP 7+ 代碼 
$getX = function() { 
    return $this->x; 
}; 
echo $getX->call(new A); 
?>


7、CSPRNG(偽隨機數產生器)。

PHP 7 通過引入幾個 CSPRNG 函數提供一種簡單的機制來生成密碼學上強壯的隨機數。

random_bytes() - 加密生存被保護的偽隨機字符串。

random_int() - 加密生存被保護的偽隨機整數。


8、異常

PHP 7 異常用于向下兼容及增強舊的assert()函數。


9、use 語句改變

#可以導入同一個namespace下的類簡寫
use some\namespace\{ClassA, ClassB, ClassC as C};


10、Session 選項

1.session_start()可以定義數組
<?php
session_start(&#91;
   'cache_limiter' => 'private',
   'read_and_close' => true,
]);
?>
2.引入了一個新的php.ini設置(session.lazy_write),默認情況下設置為 true,意味著session數據只在發生變化時才寫入。


11、PHP 7 移除的擴展

ereg
mssql
mysql
sybase_ct



為什么 PHP7 比 PHP5 性能提升了?


1、變量存儲字節減小,減少內存占用,提升變量操作速度


2、改善數組結構,數組元素和hash映射表被分配在同一塊內存里,降低了內存占用、提升了 cpu 緩存命中率


3、改進了函數的調用機制,通過優化參數傳遞的環節,減少了一些指令,提高執行效率


傳說php7 運行效率極高,是真的嗎?我來親自試試,代碼如下:

<?php
$stratTime   = microtime(true);
$startMemory = memory_get_usage();
$a = 1;
for($i = 1; $i <= 100000; $i++){
	$a++;
}
echo $a;
$endTime    = microtime(true);
$runtime    = ($endTime - $stratTime) * 1000; //將時間轉換為毫秒
$endMemory  = memory_get_usage();
$usedMemory = ($endMemory - $startMemory) / 1024;
echo "運行時間: {$runtime} 毫秒<br />";
echo "耗費內存: {$usedMemory} K";

以上代碼是記錄php運行100000次循環需要的時間和消耗的內存。


php7運行情況

100001運行時間: 3 - 7 毫秒耗費內存: 0.109375 K


php5.5運行情況

100001運行時間: 18 - 30 毫秒耗費內存: 0.671875 K


看來真的是快了不少?。。?! 時間節省了6倍,內存節省了6倍。非常不錯的數據!

不過站長們升級php7還是需要謹慎,因為很多插件還沒有更新! 比如最新的memcache擴展還沒有發布等等.....

我們可以提前學習php7的變化,待其成熟果斷使用??!


如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇


發表評論 (1917人查看,0條評論)
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
用戶名: 驗證碼: 點擊我更換圖片
最新評論
------分隔線----------------------------
自拍偷拍福力视频,偷拍国际精品,麻豆一区福利电影,国产网红视频午夜福利,se视频大全,久久国产AV影院 被多人轮到站不起来| 男女裸体下面进入的免费视频| 亚洲日本中文字幕天天更新| 国产午夜福利不卡在线观看| 精品国产网红主播在线直播网| 日本_本道无码不卡在线| 亚洲开心婷婷中文字幕| 肉动漫无修在线播放| 2021酒肉世界网站入口| 国产娇小粉嫩学生| 日本高清黄色毛片视频在线网站| 精品国产网红主播在线直播网| 日韩激情情色| 娇妻被黑人大杂交19p| 国产无遮挡又黄又爽不要vip| 很黄很污床震激烈摸下面| xvideos com中国人| 亚洲欧洲自拍拍偷午夜色| 久久综合av免费观看| 俄罗斯人体艺术| 麻豆传谋官方入口| 久久久婷婷五月亚洲97色| 小说雯雯在工地被灌满精| 手机看片福利永久国产| 色爱综合另类图片av| 女性裸身照无遮| 免费观看人成午夜免费五分钟| 日本免费一区二区| 亚洲欧美波霸爆乳a片| 男人色偷偷到天堂a在538线| 中国和老太大| http://www.my-lohas.com