layout
title
date
author
desc
in_head
post
php7新特性介紹
2017-12-15 10:28:02 +0800
南丞
php7新特性介紹
新特性介紹:
<?php
$arr = ;
for($i=0; $i<100000; $i++)
p(memory_get_usage(true));
//php5: 45m
//php7: 10m
call_user_function(_array) => zend_init_user_call
is_int、is_string、is_array、... => zend_type_check
strlen => zend_strlen
defined => zend+defined
php5(zend_qsort)
快速排序(非穩定排序)
array(1 => 0, 0 => 0)
php7(zend_sort)
快速排序+選擇排序(穩定排序)
array(0 => 0, 1 => 0)
小於16個元素的使用選擇排序,大於16個按照16個為單位去分割,分別使用選擇排序,然後再全部合起來使用快速排序。排序較之前相比,內部元素由非穩定排序變成穩定排序,減少元素的交換次數,減少對記憶體的操作次數,效能提公升40%
$$foo['bar']['baz']
php5: $
php7: ($$foo)[『bar』][『baz']【從左至右法則】
(function() {})();
$foo()();
[$obj, 'method']();
class a
}[new a, 'a1']();
$f = function() ;
class f
$f->call(new f);
function getanonymousclass($config) ;
}p(getanonymousclass(array()));
//php5
$a = array(1, 2, 3);foreach ($a as $v)
int(2)
int(2)
int(2)
$a = array(1, 2, 3);$b=&$a;foreach ($a as $v)
int(2)
int(3)
bool(false)
$a = array(1, 2, 3);$b=$a;foreach ($a as $v)
int(1)
int(1)
int(1)
//php7:不再運算元據的內部指標了
$a = array(1, 2, 3);foreach ($a as $v)
int(1)
int(1)
int(1)
$a = array(1, 2, 3);$b=&$a;foreach ($a as $v)
int(1)
int(1)
int(1)
<?php
//php5
function compare($a, $b)
//php7
function compare($a, $b)
2 ** 2; // 2 * 2 = 4
2 ** -1; // 1 / 2 = 0.5
3 ** -2; // 1 / 9 = 0.111111111
$a = null;
$b = 1;
$c = 2;
echo $a ?? $b , 『,』 , $c ?? $b; // 1,2
echo $a ?? $b ?? $c , 『,』 , $a ?? $d ?? $c; // 1,2
\uecho "\u";//你
echo "\u";//新
// 從右至左強制
echo"\uiabgnay\u";;
function getint() : int ;
getint();
//返回值為datetime的函式
function getdatetime() : datetime ;
function getamount(int $num) : int ;
getamount('test');
//php5
#php catchable fatal error: argument 1 passed to getint() must be an instance of int, string given…
//php7
#fatal error: uncaught typeerror: argument 1 passed to getint() must be of the type integer, string given…
getamount('123');
#php7新增的嚴格模式選項開啟下也會報錯【declare(strict_types=1),注意要放到**的第一行】
try catch(engineexception $e) \n";
} finally
//這裡用php7試了一下沒有捕獲成功【但是確實丟擲了異常】。。。
php7的新特性
截止到目前為止,php官方已經發布了php7的rc5版本,預計在11月份左右會發布第乙個正式版本!現在來說php7的重大特性肯定已經是定型了,不會再有什麼變動了。後續一些版本的迭代主要也就是修修bug,優化之類的。下面就來說話我們一直期待的php7.0新特徵吧。1.標量引數型別宣告 現在支援字串 s...
PHP7 常用新特性
1.標量型別宣告 php是一種弱型別的程式語言,因此沒有提供任何方法來指定輸入引數和返回值的型別,php7突破了這種現狀,增加了對標量型別 int,float,string,bool 的宣告支援,增加declare strict types 1 指令宣告是否嚴格型別校驗,來看一段 declare s...
PHP7的新特性
php7 從發布到現在已經有快三年的時間了,現在已經發展到 php7.2.9 版本了。它的發布給 php 帶來了很大的效能提公升,這主要是得益於 php 對 zend 引擎的深度優化,同時還降低了 php 對系統的資源占用。主要的變化有以下幾點 在php之前的版本中,php 在語法解析階段直接生成了...