摘要:標(biāo)量類型聲明在中,引入了一個(gè)新的特性,即標(biāo)量類型聲明。棄用樣式構(gòu)造函數(shù)是與它們定義的類具有相同名稱的方法,現(xiàn)在已被棄用,并且將來將被刪除。
說明
PHP 7使用新的Zend Engine 3.0將應(yīng)用程序性能提高近兩倍,內(nèi)存消耗比PHP 5.6高出50%。它允許服務(wù)更多的并發(fā)用戶,而不需要任何額外的硬件。PHP 7是考慮到今天的工作負(fù)載而設(shè)計(jì)和重構(gòu)的。
PHP新功能總結(jié)改進(jìn)的性能 - 將PHPNG代碼合并到PHP7中,速度是PHP 5的兩倍。
降低內(nèi)存消耗 - 優(yōu)化的PHP 7使用較少的資源。
標(biāo)量類型聲明 - 現(xiàn)在可以強(qiáng)制執(zhí)行參數(shù)和返回類型。
一致的64位支持 - 對(duì)64位體系結(jié)構(gòu)機(jī)器的一致支持。
改進(jìn)了異常層次 - 異常層次得到了改進(jìn)
許多致命的錯(cuò)誤轉(zhuǎn)換為例外 - 例外范圍增加,涵蓋許多致命的錯(cuò)誤轉(zhuǎn)換為例外。
安全隨機(jī)數(shù)發(fā)生器 - 增加新的安全隨機(jī)數(shù)發(fā)生器API。
已棄用的SAPI和擴(kuò)展已刪除 - 各種舊的和不受支持的SAPI和擴(kuò)展從最新版本中刪除。
空合并運(yùn)算符(?) - 添加了新的空合并運(yùn)算符。
返回和標(biāo)量類型聲明 - 支持所添加的返回類型和參數(shù)類型。
匿名類 - 支持匿名添加。
零成本斷言 - 支持零成本斷言增加。
標(biāo)量類型聲明在PHP 7中,引入了一個(gè)新的特性,即標(biāo)量類型聲明。標(biāo)量類型聲明有兩個(gè)選項(xiàng)
強(qiáng)制 - 強(qiáng)制是默認(rèn)模式,不需要指定。
嚴(yán)格 - 嚴(yán)格的模式已經(jīng)明確暗示。
功能參數(shù)的以下類型可以使用上述模式強(qiáng)制執(zhí)行
float
int
bool
string
interfaces
array
callable
強(qiáng)制模式
嚴(yán)格模式返回類型聲明
有效的返回類型
無效返回類型空合并運(yùn)算符
在PHP 7中,引入了一個(gè)新的特性,即空合并運(yùn)算符(??)。它用來替代與isset()函數(shù)結(jié)合的三元操作。該空如果它存在,而不是空合并運(yùn)算符返回第一個(gè)操作數(shù); 否則返回第二個(gè)操作數(shù)。
"); // Equivalent code using ternary operator $username = isset($_GET["username"]) ? $_GET["username"] : "not passed"; print($username); print("飛船運(yùn)算符
"); // Chaining ?? operation $username = $_GET["username"] ?? $_POST["username"] ?? "not passed"; print($username); // output //not passed ?>
它用來比較兩個(gè)表達(dá)式。當(dāng)?shù)谝粋€(gè)表達(dá)式分別小于,等于或大于第二個(gè)表達(dá)式時(shí),它返回-1,0或1。字符串比較ASCII
//integer comparison print( 1 <=> 1);print("常量數(shù)組
"); print( 1 <=> 2);print("
"); print( 2 <=> 1);print("
"); // output 0 -1 1
使用define()函數(shù)定義數(shù)組常量。在PHP 5.6中,只能使用const關(guān)鍵字來定義它們。
匿名類現(xiàn)在可以使用新類來定義匿名類。匿名類可以用來代替完整的類定義。
logger; } public function setLogger(Logger $logger) { $this->logger = $logger; } } $app = new Application; $app->setLogger(new class implements Logger { public function log(string $msg) { print($msg); } }); $app->getLogger()->log("My first Log Message"); ?> //output My first Log MessageClosure類
Closure :: call()方法被添加為一個(gè)簡(jiǎn)短的方式來臨時(shí)綁定一個(gè)對(duì)象作用域到一個(gè)閉包并調(diào)用它。與PHP5的bindTo相比,它的性能要快得多。
在PHP 7之前
x; }; // Bind a clousure $value = $getValue->bindTo(new A, "A"); print($value()); //output 1 ?>
PHP 7+
x; }; print($value->call(new A)); //output 1 ?>過濾unserialize
PHP 7引入了過濾的unserialize()函數(shù),以便在對(duì)不可信數(shù)據(jù)上的對(duì)象進(jìn)行反序列化時(shí)提供更好的安全性。它可以防止可能的代碼注入,并使開發(fā)人員能夠?qū)梢苑葱蛄谢念愡M(jìn)行白名單。
obj1prop = 1; $obj2 = new MyClass2(); $obj2->obj2prop = 2; $serializedObj1 = serialize($obj1); $serializedObj2 = serialize($obj2); // default behaviour that accepts all classes // second argument can be ommited. // if allowed_classes is passed as false, unserialize converts all objects into __PHP_Incomplete_Class object $data = unserialize($serializedObj1 , ["allowed_classes" => true]); // converts all objects into __PHP_Incomplete_Class object except those of MyClass1 and MyClass2 $data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]); print($data->obj1prop); print("IntlChar
"); print($data2->obj2prop); //output 1 2 ?>
在PHP7中,增加了一個(gè)新的IntlChar類,它試圖揭示額外的ICU功能。這個(gè)類定義了一些靜態(tài)方法和常量,可以用來處理Unicode字符。在使用這個(gè)課程之前,你需要安裝Intl擴(kuò)展。
CSPRNG在PHP 7中,引入了兩個(gè)新的函數(shù)來以跨平臺(tái)的方式生成密碼安全的整數(shù)和字符串。
random_bytes() - 生成密碼安全的偽隨機(jī)字節(jié)。
random_int() - 生成密碼安全的偽隨機(jī)整數(shù)。
使用聲明從PHP7開始,可以使用單個(gè)use語句從相同的命名空間導(dǎo)入類,函數(shù)和常量,而不是使用多個(gè)use語句。
整數(shù)部分PHP 7引入了一個(gè)新的函數(shù)intdiv(),它對(duì)它的操作數(shù)進(jìn)行整數(shù)除法,并將除法運(yùn)算返回為int。
會(huì)話選項(xiàng)session_start()函數(shù)接受來自PHP7 + 的一系列選項(xiàng)來覆蓋php.ini中設(shè)置的會(huì)話配置指令。這些選項(xiàng)支持session.lazy_write,默認(rèn)情況下,它會(huì)導(dǎo)致PHP在會(huì)話數(shù)據(jù)發(fā)生更改時(shí)覆蓋任何會(huì)話文件。
添加的另一個(gè)選項(xiàng)是read_and_close,它表示應(yīng)該讀取會(huì)話數(shù)據(jù),然后應(yīng)該立即關(guān)閉會(huì)話。例如,將session.cache_limiter設(shè)置為private,并使用以下代碼片段將標(biāo)志設(shè)置為在讀取完畢后立即關(guān)閉會(huì)話。
"private", "read_and_close" => true, ]); ?>棄用
PHP 4樣式構(gòu)造函數(shù)是與它們定義的類具有相同名稱的方法,現(xiàn)在已被棄用,并且將來將被刪除。如果PHP 4的構(gòu)造函數(shù)是類中定義的唯一構(gòu)造函數(shù),則PHP 7將發(fā)出E_DEPRECATED。實(shí)現(xiàn)__construct()方法的類不受影響。
對(duì)非靜態(tài)方法的靜態(tài)調(diào)用已被棄用,并可能在將來被刪除
password_hash()函數(shù)的salt選項(xiàng)已被棄用,所以開發(fā)人員不會(huì)生成自己的(通常是不安全的)鹽。當(dāng)開發(fā)人員不提供鹽時(shí),函數(shù)本身會(huì)生成密碼安全的鹽,因此不再需要定制鹽的生成。
該capture_session_meta SSL上下文選項(xiàng)已被棄用。SSL元數(shù)據(jù)現(xiàn)在通過stream_get_meta_data()函數(shù)使用。錯(cuò)誤處理
從PHP 7開始,錯(cuò)誤處理和報(bào)告已經(jīng)改變。而不是通過PHP 5使用的傳統(tǒng)錯(cuò)誤報(bào)告機(jī)制來報(bào)告錯(cuò)誤,現(xiàn)在大多數(shù)錯(cuò)誤都是通過拋出錯(cuò)誤異常來處理的。與異常類似,這些錯(cuò)誤異常會(huì)一直冒泡,直到它們到達(dá)第一個(gè)匹配的catch塊。如果沒有匹配的塊,則使用set_exception_handler()安裝的默認(rèn)異常處理程序?qū)⒈徽{(diào)用。如果沒有默認(rèn)的異常處理程序,那么異常將被轉(zhuǎn)換為致命錯(cuò)誤,并將像傳統(tǒng)的錯(cuò)誤一樣處理。
由于錯(cuò)誤層次結(jié)構(gòu)不是從Exception擴(kuò)展的,所以使用catch(Exception $ e){...}塊來處理PHP 5中未捕獲的異常的代碼將不會(huì)處理這樣的錯(cuò)誤。catch(Error $ e){...}塊或set_exception_handler()處理程序是處理致命錯(cuò)誤所必需的。
n % 0; return $value; } catch (DivisionByZeroError $e) { return $e->getMessage(); } } } $mathOperationsObj = new MathOperations(); print($mathOperationsObj->doOperation()); // output Modulo by zero ?>結(jié)尾說明
2017已經(jīng)接近尾聲,嶄新的2018即將來臨,在這個(gè)知識(shí)日新月異的時(shí)代,溫故而知新。script maker!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/26229.html
摘要:錯(cuò)誤是運(yùn)行期間的嚴(yán)重問題,通常是因?yàn)榇a出錯(cuò)而造成,必須要修正它,否則會(huì)使停止執(zhí)行。警告是非致命錯(cuò)誤,程序執(zhí)行也不會(huì)因此而中止。 showImg(https://segmentfault.com/img/remote/1460000018197894?w=720&h=398); 前言 近期因公司內(nèi)部轉(zhuǎn)崗,開始參與PHP項(xiàng)目進(jìn)行后端開發(fā),一直都是強(qiáng)類型寫的比較多,弱類型語言也有接觸了一些...
摘要:包括安裝與下載,證書申請(qǐng)與配置,升級(jí)到,服務(wù)器的簡(jiǎn)單配置。這對(duì)一個(gè)應(yīng)用來說,所造成的后果無疑是毀滅性的。然后在新建一個(gè)目錄,將剛才的文件放進(jìn)去,便于統(tǒng)一管理其中紅色框框的是要用到文件。 原文地址: here 在部署自己的博客到 LEMP 環(huán)境的時(shí)候,遇到了一些小挫折,現(xiàn)在把經(jīng)驗(yàn)分享出來,讓大家少走彎路。包括Php7.1安裝與下載,SSL證書申請(qǐng)與配置,Mysql升級(jí)到5.7,Ngin...
摘要:性能優(yōu)化使用棧內(nèi)存在引擎和擴(kuò)展中,經(jīng)常要?jiǎng)?chuàng)建一個(gè)變量,底層就是一個(gè)指針。而可以直接使用棧內(nèi)存作用節(jié)省一次內(nèi)存分配和管理存儲(chǔ)值,查詢不需要重復(fù)計(jì)算為字符串單獨(dú)創(chuàng)建了新類型叫做,除了指針和長(zhǎng)度之外,增加了一個(gè)字段,用于保存字符串的值。 變量類型 PHP7版本函數(shù)的參數(shù)和返回值增加了類型限定。原因:為了PHP7.1版本JIT特性做準(zhǔn)備,增加類型之后PHP, JIT可以準(zhǔn)確判斷變量類型,生成最...
摘要:我們修改上面代碼,再來看下返回值類型限制的情況運(yùn)行結(jié)果這段代碼我們額外聲明了返回值的類型為型。對(duì)函數(shù)返回值的聲明做了擴(kuò)充,可以定義其返回值為,無論是否開啟嚴(yán)格模式,只要函數(shù)中有以外的其他語句都會(huì)報(bào)錯(cuò)。 順風(fēng)車運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 王坤 發(fā)表至21CTO公眾號(hào)(https://mp.weixin.qq.com/s/ph...) showImg(https://segmentfault.c...
摘要:主要的變化有以下幾點(diǎn)抽象語法樹在之前的版本中,代碼在語法解析階段直接生成了指令,也就是在中直接生成指令,這使得編譯器與執(zhí)行器耦合在一起。 PHP7 從發(fā)布到現(xiàn)在已經(jīng)有快三年的時(shí)間了,現(xiàn)在已經(jīng)發(fā)展到 PHP7.2.9 版本了。它的發(fā)布給 PHP 帶來了很大的性能提升,這主要是得益于 PHP 對(duì) Zend 引擎的深度優(yōu)化,同時(shí)還降低了 PHP 對(duì)系統(tǒng)的資源占用。 主要的變化有以下幾點(diǎn): 抽...
閱讀 3123·2021-10-13 09:39
閱讀 1972·2021-09-02 15:15
閱讀 2508·2019-08-30 15:54
閱讀 1868·2019-08-30 14:01
閱讀 2679·2019-08-29 14:13
閱讀 1500·2019-08-29 13:10
閱讀 2791·2019-08-28 18:15
閱讀 4074·2019-08-26 10:20