談?wù)?PHP7新增功能
php7發(fā)布已有半月,最近有時間了解一下php7的新特性,當(dāng)然,這個版本最大的特點是性能的提升。在下并非高手,歡迎大家指出錯誤,同時期待共同交流。
PHP語言一個非常重要的特點就是“弱類型”,它讓PHP的程序變得非常容易編寫,新手接觸PHP能夠快速上手,不過,它也伴隨著一些爭議。支持變量類型的定義,可以說是革新性質(zhì)的變化,PHP開始以可選的方式支持類型定義。除此之外,還引入了一個開關(guān)指令declare(strict_type=1);,當(dāng)這個指令一旦開啟,將會強制當(dāng)前文件下的程序遵循嚴格的函數(shù)傳參類型和返回類型。
1.在use語句增加了group支持
use FooLibrary\Bar\Baz\{ ClassA, ClassB, ClassC, ClassD as Fizbo };
2.增加??操作符
isset($_GET['mykey']) ? $_GET['mykey'] : ""笨重 $_GET['mykey'] ?: "" 當(dāng)mykey不存在時會報一個E_NOTICE $_GET['mykey'] ?? 'defaultvalue' 安全不會報E_NOTICE $username = $_GET['user'] ?? 'nobody';
3. 64位PHP7字符串長度可以超過2^31次方字節(jié)。
4.增加Closure::call支持
Closure::call將一個閉包函數(shù)動態(tài)綁定到一個新的對象實例并調(diào)用執(zhí)行該函數(shù),
<?php class Value { protected $value; public function __construct($value) { $this->value = $value; } public function getValue() { return $this->value; } } $three = new Value(); $four = new Value(); $closure = function ($delta) { var_dump($this->getValue() + $delta); }; $closure->call($three, ); $closure->call($four, ); ?> // outputs int(),int()
5.雙引號字符串和heredocs里面支持使用\u{xxxxx}來聲明unicode字符。
6.define對數(shù)組的支持
define('ANIMALS', array( 'dog', 'cat', 'bird' )); echo ANIMALS[]; // outputs "cat"
7.增加比較運算符<=>
$a <=> $b
如果a等于b則為0
如果a大于b則為1
如果a小于b則為-1
8.php全局保留字可以聲明使用
class View { public function include(View $view) { //... } }
include關(guān)鍵字可以當(dāng)普通字符串關(guān)鍵字一樣被使用
9.標(biāo)量類型(int,float,string,bool)支持
增加declare(strict_types=1)指令聲明是否嚴格類型校驗,
當(dāng)在文件頭聲明declare(strict_types=1)
<php declare(strict_types=); function add(float $a, float $b): float { return $a + $b; } add(, ); // float()
以上代碼如果不開啟declare(strict_types=1)或許declare(strict_types=0),php將自動轉(zhuǎn)換參數(shù)和返回值到指定類型,
開啟declare(strict_types=1),如果參數(shù)類型不是flaot或許返回類型不是float則拋出錯誤
10.增加接口為用戶層提供安全方便的隨機數(shù)生成器。RFC: https://wiki.php.net/rfc/easy_userland_csprng (后續(xù)再議)
11.增加了yield from 操作符。https://wiki.php.net/rfc/generator-delegation (后續(xù)再議)
知識是我們已知的 也是我們未知的 基于已有的知識之上 我們?nèi)グl(fā)現(xiàn)未知的 由此,知識得到擴充 我們獲得的知識越多 未知的知識就會更多 因而,知識擴充永無止境。
附:PHP7卓越性能背后的原理有哪些
PHP7在運行原理上與PHP5相比并沒有變化,這與hhvm不同。主要是基于perf性能分析工具進行了常規(guī)性能優(yōu)化。
減少內(nèi)存分配次數(shù),多使用棧內(nèi)存,緩存數(shù)組hash值,字符串解析成參數(shù)改為宏展開,使用大塊連續(xù)內(nèi)存代替小塊內(nèi)存等等。更細節(jié)信息請看鳥哥的PHP7分享PPT。zend引擎程序的性能提升了很多,PHP程序性能自然好了。所有的優(yōu)化都是很實在的,從細節(jié)入手積少成多。
想辦法去優(yōu)化一個有20年歷史的程序,這是一件非常有挑戰(zhàn)性的事情,比推倒重構(gòu)難度更高。世界上有80%的網(wǎng)站用PHP,使用PHP7后這些網(wǎng)站程序無太大成本就能免費得到1倍性能提升。將節(jié)約多少CPU,節(jié)約多少電力,減少多少碳排放。另外PHP是開源項目,背后沒有商業(yè)公司,完全由社區(qū)運作。使用PHP語言的開發(fā)者和企業(yè)從未向PHP官方付過一分錢。所以建議各位知友口下留德,無論您多么鄙視PHP,但請尊重別人為世界所做的付出。
以上內(nèi)容是小編給大家介紹的PHP7新增功能及PHP7卓越性能背后的原理,希望大家喜歡。
相關(guān)文章
PHP 動態(tài)生成靜態(tài)HTML頁面示例代碼
這篇文章主要為大家分享下PHP 動態(tài)生成靜態(tài)HTML頁面示例代碼,需要的朋友可以參考下2014-01-01laravel實現(xiàn)查詢最后執(zhí)行的一條sql語句的方法
今天小編就為大家分享一篇laravel實現(xiàn)查詢最后執(zhí)行的一條sql語句的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10PHP中關(guān)于PDO數(shù)據(jù)訪問抽象層的功能操作實例
下面小編就為大家?guī)硪黄狿HP中關(guān)于PDO數(shù)據(jù)訪問抽象層的功能操作實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09php大小寫轉(zhuǎn)換函數(shù)(strtolower、strtoupper)用法介紹
strtoupper() 函數(shù)把字符串轉(zhuǎn)換為大寫而strtolower函數(shù): 該函數(shù)將傳入的字符串參數(shù)所有的字符都轉(zhuǎn)換成小寫,并以小定形式放回這個字符串。下面通過本文給大家分享php大小寫轉(zhuǎn)換函數(shù)(strtolower、strtoupper)用法,需要的朋友參考下吧2017-11-11php實現(xiàn)的IMEI限制的短信驗證碼發(fā)送類
本文給大家分享的是可以檢驗手機號碼與IMEI的短信驗證碼發(fā)送的php類,十分的實用,這里推薦給大家,有需要的小伙伴可以參考下。2015-05-05