ホームページ >バックエンド開発 >PHPチュートリアル >PHP7の新機能の紹介
これまでのところ、PHP は php7 の RC5 バージョンを正式にリリースしており、最初の正式バージョンは 11 月頃にリリースされる予定です。現在、php7 の主要な機能は確実に完成しており、これ以上の変更はありません。後続のいくつかのバージョンの反復は、主にバグ修正、最適化などです。私たちが楽しみにしていた php7 の主な変更点について話しましょう。 。 。
ZEND エンジンが Zend Engine 3 (PHP NG とも呼ばれる) にアップグレード
一部の機能を削除
定義 => ZEND+DEFINED新しいメモリ割り当てと管理方法を使用してメモリの無駄を削減します
コアソートの最適化
//PHP5 - 快速排序(非稳定排序)array(1 => 0, 0 => 0)//PHP7 - 快速排序+选择排序(稳定排序)array(0 => 0, 1 => 0)
16 未満要素の選択ソートを使用する要素が 16 個を超える場合は、16 単位に分割し、それぞれ選択ソートを使用してから、すべてを結合してクイックソートを使用します。以前のソートと比較して、内部要素が非安定ソートから安定ソートに変更され、要素交換の数が減り、メモリ操作の数が減り、パフォーマンスが 40% 向上しました
抽象構文ツリー
64ビットINTサポート
2GBを超えるファイルのアップロードをサポート
すべてのプラットフォームで文字列が64ビットであることを保証[64ビット]
$$foo['bar']['baz']//PHP5($$foo)[‘bar’]['baz']//PHP7: 遵循从左到右的原则${$foo[‘bar’]['baz']}
//PHP5$a = array(1, 2, 3);foreach ($a as $v){var_dump(current($a));}int(2)int(2)int(2)$a = array(1, 2, 3);$b=&$a;foreach ($a as $v){var_dump(current($a));}int(2)int(3)bool(false)$a = array(1, 2, 3);$b=$a;foreach ($a as $v){var_dump(current($a));}int(1)int(1)int(1)//PHP7:不再操作数据的内部指针了$a = array(1, 2, 3);foreach ($a as $v){var_dump(current($a))}int(1)int(1)int(1)$a = array(1, 2, 3);$b=&$a;foreach ($a as $v){var_dump(current($a))int(1)int(1)int(1)$a = array(1, 2, 3);$b=$a;foreach ($a as $v){var_dump(current($a))}int(1)int(1)int(1)
//<=> - 比较两个数的大小【-1:前者小于后者,0:前者等于后者,1:前者大于后者】echo 1 <=> 2;//-1echo 1 <=> 1;//0echo 1 <=> 0;//1// ** - 【a的b次方】echo 2 ** 3;//8//?? - 三元运算符的改进//php5$_GET['name'] ? $_GET['name'] : '';//Notice: Undefined index: …//php7$_GET['name'] ?? '' -> '';//\u{xxxx} - Unicode字符的解析echo "\u{4f60}";//你echo "\u{65b0}";//新
function getInt() : int { return “test”;}; getInt();//PHP5#PHP Parse error: parse error, expecting `’{‘’…//PHP7#Fatal error:Uncaught TypeError: Return value of getInt() must be of the type integer, string returned
function getInt(int $num) : int { return $num;}; getInt(“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…
try { non_exists_func();} catch(EngineException $e) {echo “Exception: {$e->getMessage();}\n”;}//这里用php7试了一下还是没法捕获,但是看鸟哥介绍说是可行的。。。#Exception: Call to undefined function non_exists_func()
//PHP5class Collection {public function foreach($arr) {}}#Parse error: parse error, expecting `"identifier (T_STRING)”’...//PHP7class Collection { public function foreach($arr) {} public function in($arr){} public function where($condition){} public function order($condition){}}$collection = new Collection();$collection->where()->in()->foreach()->order();
差不多了,基本上就把自己对php7的初步了解说完了,其中肯定有很多不对的、低级的错误,希望各位兄弟及时指正,我好改一下,做个笔记!嘿嘿!
其中的内容和截图大部分都是来自鸟哥演讲的ppt。。。