成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

PHP7新特性小結(jié)

Steven / 736人閱讀

摘要:標(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("
"); // Chaining ?? operation $username = $_GET["username"] ?? $_POST["username"] ?? "not passed"; print($username); // output //not passed ?>
飛船運(yùn)算符

它用來比較兩個(gè)表達(dá)式。當(dāng)?shù)谝粋€(gè)表達(dá)式分別小于,等于或大于第二個(gè)表達(dá)式時(shí),它返回-1,0或1。字符串比較ASCII

//integer comparison
   print( 1 <=> 1);print("
"); print( 1 <=> 2);print("
"); print( 2 <=> 1);print("
"); // output 0 -1 1
常量數(shù)組

使用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 Message
Closure類

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("
"); print($data2->obj2prop); //output 1 2 ?>
IntlChar

在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

相關(guān)文章

  • 大話轉(zhuǎn)崗 PHP 開發(fā)小結(jié)

    摘要:錯(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)類型寫的比較多,弱類型語言也有接觸了一些...

    Cristic 評(píng)論0 收藏0
  • 一步一步教你部署自己的 Laravel 應(yīng)用程序到服務(wù)器

    摘要:包括安裝與下載,證書申請(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...

    lolomaco 評(píng)論0 收藏0
  • PHP7.1_特性

    摘要:性能優(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)確判斷變量類型,生成最...

    xiao7cn 評(píng)論0 收藏0
  • PHP7源碼分析】PHP7到底有多快,基準(zhǔn)測(cè)試與特性分析告訴你

    摘要:我們修改上面代碼,再來看下返回值類型限制的情況運(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...

    Towers 評(píng)論0 收藏0
  • PHP7特性

    摘要:主要的變化有以下幾點(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): 抽...

    Honwhy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<