五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > php7和php5區(qū)別對比 不同之處和運行效率比較

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

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

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

PHP 5.3

添加了命名空間的支持.


添加了靜態(tài)晚綁定支持.


添加了跳標(biāo)簽支持.


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


新增了兩個魔術(shù)方法, __callStatic 和 __invoke.


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


使用 Heredoc 來初始化靜態(tài)變量和類屬性/常量變?yōu)榭赡?


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


可在類外部使用 const 關(guān)鍵詞聲明 常量.


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


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


動態(tài)訪問靜態(tài)方法變?yōu)榭赡?


異??梢员粌?nèi)嵌.


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


mail() 現(xiàn)在支持郵件發(fā)送日志. (注意: 僅支持通過該函數(shù)發(fā)送的郵件.)


PHP 5.4

新增支持 traits 。


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


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


現(xiàn)在 閉包 支持 $this 。


現(xiàn)在不管是否設(shè)置 short_open_tag php.ini 選項,<?= 將總是可用。


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


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


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


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


SESSION 擴展現(xiàn)在能追蹤文件的 上傳進度 。


內(nèi)置用于開發(fā)的 CLI 模式的 web server 。


PHP5.5

新增 Generators


新增 finally 關(guān)鍵字


foreach 現(xiàn)在支持 list()


empty() 支持任意表達式


array and string literal dereferencing ?


新的密碼哈希 API


改進 GD


PHP5.6

使用表達式定義常量


使用 ... 運算符定義變長參數(shù)函數(shù)


使用 ... 運算符進行參數(shù)展開


使用 ** 進行冪運算


use function 以及 use const


phpdbg


默認字符編碼


php://input 是可重用的了


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


GMP 支持運算符重載


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


__debugInfo()


gost-crypto 散列算法


SSL/TLS 提升


pgsql 異步支持


PHP7.0

標(biāo)量類型聲明


返回值類型聲明


null合并運算符


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


通過 define() 定義常量數(shù)組


匿名類


Unicode codepoint 轉(zhuǎn)譯語法


Closure::call()


為unserialize()提供過濾


IntlChar


預(yù)期


Group use declarations


生成器可以返回表達式


Generator delegation


整數(shù)除法函數(shù) intp()


會話選項


preg_replace_callback_array()


CSPRNG Functions


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


其他特性


PHP7.1

可為空(Nullable)類型


Void 函數(shù)


Symmetric array destructuring


類常量可見性


iterable 偽類


多異常捕獲處理


list()現(xiàn)在支持鍵名


支持為負的字符串偏移量


ext/openssl 支持 AEAD


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


異步信號處理


HTTP/2 server push support in ext/curl


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


1、php標(biāo)量類型和返回類型聲明

#主要分為兩種模式,強制性模式和嚴格模式
declare(strict_types=1)
#1表示嚴格類型校驗?zāi)J?,作用于函?shù)調(diào)用和返回語句;0表示弱類型校驗?zāi)J健?/pre>


2、NULL合并運算符

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


3、組合預(yù)算符

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


4、常量數(shù)組

// 使用 define 函數(shù)來定義數(shù)組
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 創(chuàng)建匿名類 
$app->setLogger(new class implements Logger { 
   public function log(string $msg) { 
      print($msg); 
   } 
}); 
$app->getLogger()->log("我的第一條日志");


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

<?php 
class A { 
    private $x = 1; 
} 
// PHP 7 之前版本定義閉包函數(shù)代碼 
$getXCB = function() { 
    return $this->x; 
}; 
// 閉包函數(shù)綁定到類 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(偽隨機數(shù)產(chǎn)生器)。

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

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

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


8、異常

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


9、use 語句改變

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


10、Session 選項

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


11、PHP 7 移除的擴展

ereg
mssql
mysql
sybase_ct



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


1、變量存儲字節(jié)減小,減少內(nèi)存占用,提升變量操作速度


2、改善數(shù)組結(jié)構(gòu),數(shù)組元素和hash映射表被分配在同一塊內(nèi)存里,降低了內(nèi)存占用、提升了 cpu 緩存命中率


3、改進了函數(shù)的調(diào)用機制,通過優(yōu)化參數(shù)傳遞的環(huán)節(jié),減少了一些指令,提高執(zhí)行效率


傳說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; //將時間轉(zhuǎn)換為毫秒
$endMemory  = memory_get_usage();
$usedMemory = ($endMemory - $startMemory) / 1024;
echo "運行時間: {$runtime} 毫秒<br />";
echo "耗費內(nèi)存: {$usedMemory} K";

以上代碼是記錄php運行100000次循環(huán)需要的時間和消耗的內(nèi)存。


php7運行情況

100001運行時間: 3 - 7 毫秒耗費內(nèi)存: 0.109375 K


php5.5運行情況

100001運行時間: 18 - 30 毫秒耗費內(nèi)存: 0.671875 K


看來真的是快了不少?。。?! 時間節(jié)省了6倍,內(nèi)存節(jié)省了6倍。非常不錯的數(shù)據(jù)!

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

我們可以提前學(xué)習(xí)php7的變化,待其成熟果斷使用??!


如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答!! 點擊進入論壇

發(fā)表評論 (2103人查看0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號