截止到目前為止,php官方已經發布了php7的rc7版本,距離發布第乙個正式版本不會很遠了!現在來說php7的重大特性肯定已經是定型了,不會再有什麼變動了。後續一些版本的迭代主要也就是修修bug,優化之類的。下面就來說話我們一直期待的php7會有那些主要的變化了。。。
大小從24位元組減少到16位元組
hashtable大小從72位元組減少到56位元組hashtable bucket大小從72位元組減少到32位元組
php5:45m
php7:10m
php5(call_user_function(_array)
=>zend_init_user_call
is_int
、is_string
、is_array
、... =>zend_type_check
strlen
=>zend_strlen
defined
=>zend+defined
zend_qsort
)
快速排序(非穩定排序)
array(1 => 0, 0 => 0)
php7(zend_sort
)
快速排序+選擇排序(穩定排序)
array(0 => 0, 1 => 0)
小於16個元素的使用選擇排序,大於16個按照16個為單位去分割,分別使用選擇排序,然後再全部合起來使用快速排序。排序較之前相比,內部元素由非穩定排序變成穩定排序,減少元素的交換次數,減少對記憶體的操作次數,效能提公升40%
假如現在我們有這樣的需求,要對php原始檔就行語法檢測,實現編碼規範。php5之前的話,沒有ast,直接從parser就生成了opcodes!就需要借助一些外部的php語法解析器來實現;而php7增加了ast,我們可以自己去實現這樣乙個擴充套件,利用擴充套件提供的函式可以直接獲取檔案對應的的ast結構,而這樣的結構正是我們可以識別的,所以就可以在這個基礎上去做一些優化和判斷了。
$$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)
//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
\u$a = null;
$b = 1;
$c = 2;
echo
$a ?? $b , 『,』 , $c ?? $b; // 1,2
echo
$a ?? $b ?? $c , 『,』 , $a ?? $d ?? $c; // 1,2
echo
"\u";//你
echo
"\u";//新
// 從右至左強制
echo
"\uiabgnay\u";;
PHP7的一些特性用法
1.use的用法 php 7 之前版本用法 use some namespace classa use some namespace classb use some namespace classc as c use function some namespace fn a use function...
關於php7的一些新的語法
用於比較兩個表示式。如當 a 小於 等於和大於 b的時候,分別返回 1 0 1 例子 整數 echo 1 1 0 echo 2 1 1 echo 1 2 1 浮點數 echo 1.5 1.5 0 echo 2.5 1.5 1 echo 1.5 2.5 1 字串 echo a a 0 echo b a...
Mac brew 安裝 php7 一些注意事項
1.如果你的伺服器是apache,自 macos sierra 系統發布後,homebrew 裡的 php70 安裝時預設不會編譯 apache 的 libphp7.so 模組,務必加上 with apache引數,如 brew install php 70 with apache 2.開啟php7...