亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語言

PHP 7.1 中的重大更新有哪些

時間:2024-11-08 19:15:35 php語言 我要投稿

PHP 7.1 中的重大更新有哪些

  PHP 是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風(fēng)格有類似于C語言,被廣泛地運用。下面小編帶大家了解一下PHP 7.1 中的重大的更新,更多詳情請關(guān)注應(yīng)屆畢業(yè)生考試網(wǎng)。

  可空類型

  PHP 7添加了參數(shù)類型聲明和函數(shù)返回值類型聲明,函數(shù)參數(shù)或者返回值的類型要么為指定類型要么為null。舉例如下:

  function sum(int $a, int $b): ?int{

  return $a + $b;

  }

  上述函數(shù)可以返回一個整數(shù)或一個空值,所以如果函數(shù)的邏輯中有錯誤,將不會再返回一個空類型來報錯。你也可以驗證一下。

  function sum(?int $a, ?int $b): ?int{

  if ($a == null || $b == null) {        return null;

  }    return $a + $b;

  }

  要注意的是:調(diào)用沒有參數(shù)的函數(shù)將拋出異常!

  var_dump(sum(null, null)); // NULLvar_dump(sum()); // throw ArgumentCountError exception

  這意味著,當(dāng)他們沒有默認(rèn)值時,應(yīng)該顯示指定參數(shù)。

  還有就是,在重載或?qū)崿F(xiàn)方法時不能把可空類型作為返回類型,但你可以刪除它。反之亦然!

  interface Fooable {

  function foo(): ?Fooable;}interface StrictFooable extends Fooable {

  function foo(): Fooable; // valid}interface Fooable {

  function foo(): Fooable;}interface LooseFooable extends Fooable {

  function foo(): ?Fooable; // invalid}

  解構(gòu)陣列

  當(dāng)我們解構(gòu)陣列是通常會這樣做:

  list($a, $b, $c) = [1, 2, 3];

  var_dump($a, $b, $c); // int(1) int(2) int(3)

  但這是錯的,因為我們不能指定鍵來提取和嘗試使用索引鍵的功能

  list($a, $b, $c) = ["a" => 1, "b" => 2, "c" => 3];

  var_dump($a, $b, $c); // NULL NULL NULL

  RFC提供了更多的控制陣列的解構(gòu)。上面的代碼可以改為:

  list("a" => $a, "b" => $b, "c" => $c) = ["a" => 1, "b" => 2, "c" => 3];

  var_dump($a, $b, $c); // int(1) int(2) int(3)

  上面的例子可以寫成:

  ["a" => $a, "b" => $b, "c" => $c] = ["a" => 1, "b" => 2, "c" => 3];

  var_dump($a, $b, $c); // int(1) int(2) int(3)

  很酷對不對?它還適用于多維數(shù)組:

  [[$a, $b], [$c, $d]] = [[1, 2], [3, 4]];

  var_dump($a, $b, $c, $d); // int(1) int(2) int(3) int(4)[["b" => $b], ["c" => $c]] = [["a" => 1, "b" => 2], ["c" => 3, "d" => 4]];

  var_dump($b, $c); // int(2) int(3)

  Iterable 偽類

  PHP 7.1 新引入了一個被稱為 iterable  的偽類。

  它可以被用在參數(shù)或者返回值類型中,它代表接受數(shù)組或者實現(xiàn)了 Traversable 接口的對象。以下面的代碼為例:

  // PHP 5.6function dump(array $items){

  var_dump($items);

  }

  dump([2, 3, 4]);

  dump(new Collection());

  array(3) {

  [0]=>

  int(2)

  [1]=>

  int(3)

  [2]=>

  int(4)

  }

  Catchable fatal error: Argument 1 passed to dump() must be of the type array, object given...

  但在這種情況下,函數(shù)不會接受一個價值,將拋出一個錯誤。這一新的變化,讓你使用迭代來描述而不是手動一個價值主張。

  // PHP 7.1function dump(iterable $items){

  var_dump($items);

  }

  dump([2, 3, 4]);

  dump(new Collection());

  array(3) {

  [0]=>

  int(2)

  [1]=>

  int(3)

  [2]=>

  int(4)

  }

  object(Collection)#2 (0) {}

  void返回類型

  這是我最喜歡的新功能之一。PHP 7添加了指定函數(shù)返回類型的特性,一個新的返回值類型 void 被引入。試圖去獲取一個void 方法的返回值時,將被迫返回null!并且不會產(chǎn)生任何警告。

  function dump($object): void{

  var_dump($object);

  }

  返回類型聲明為 void 類型的方法要么干脆省去 return 語句,要么添加一個空的函數(shù)(return;)。

  類常量的可見性

  雖然這是個很小的變化,但是加強(qiáng)了面向?qū)ο蟮姆庋b,現(xiàn)在起支持設(shè)置類常量的可見性:

  class Post{

  protected const PUBLISHED = 1;    protected const DRAFT = 2;    protected const TRASHED = 3;    // ...}

  捕獲多個異常類型

  在以往的try... catch 語句中,每個catch 只能設(shè)定一個條件判斷,新的版本可以在一個 catch 中設(shè)置多個條件,從而減少了需要復(fù)制的代碼。 Java 等其他語言同樣具備這種能力。以下面的代碼為例:

  // ...try {    $user->payMonth($month);

  } catch (UserSuspendedException $ex) {

  DB::rollBack();    return redirect()

  ->back()

  ->withInput()

  ->withErrors([$ex->getMessage()]);

  } catch (PaidMonthException $e) {

  DB::rollBack();    return redirect()

  ->back()

  ->withInput()

  ->withErrors([$ex->getMessage()]);

  }// ...

【PHP 7.1 中的重大更新有哪些】相關(guān)文章:

PHP7.1中有哪些重大的更新10-28

PHP7.1中重大更新是什么10-28

php用法有哪些06-16

php的優(yōu)缺點有哪些04-24

PHP語言的特性有哪些06-04

PHP語言的用途有哪些06-13

PHP處理密碼的方法有哪些10-18

php面試題目有哪些08-09

PHP語言有哪些常用的系統(tǒng)函數(shù)10-07

PHP計算時間差的方法有哪些08-31