2017 12 14 PHP7新特性介紹

2021-10-05 07:27:13 字數 4579 閱讀 3252

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 在語法解析階段直接生成了...