国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php7函數,聲明,返回值等新特性介紹

2024-09-04 11:42:23
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php7函數,聲明,返回值等新特性,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下。

使用 ... 運算符定義變長參數函數 (PHP 5 >= 5.6.0, PHP 7)

現在可以不依賴 func_get_args(), 使用 ... 運算符 來實現 變長參數函數。

  1. <?php 
  2. function f($req$opt = null, ...$params) { 
  3.  // $params 是一個包含了剩余參數的數組 
  4.  printf('$req: %d; $opt: %d; number of params: %d'."/n"
  5.   $req$optcount($params)); 
  6. f(1); 
  7. f(1, 2); 
  8. f(1, 2, 3); 
  9. f(1, 2, 3, 4); 
  10. f(1, 2, 3, 4, 5); 
  11. ?> 

以上例程會輸出:

  1. $req: 1; $opt: 0; number of params: 0 
  2. $req: 1; $opt: 2; number of params: 0 
  3. $req: 1; $opt: 2; number of params: 1 
  4. $req: 1; $opt: 2; number of params: 2 
  5. $req: 1; $opt: 2; number of params: 3 

使用 ... 運算符進行參數展開 (PHP 5 >= 5.6.0, PHP 7)

在調用函數的時候,使用 ... 運算符, 將 數組 和 可遍歷 對象展開為函數參數,在其他編程語言,比如 Ruby中,這被稱為連接運算符。

  1. <?php 
  2. function add($a$b$c) { 
  3.  return $a + $b + $c
  4. $operators = [2, 3]; 
  5. echo add(1, ...$operators); 
  6. ?> 

以上例程會輸出:

6

use function 以及 use const (PHP 5 >= 5.6.0, PHP 7)

use 運算符 被進行了擴展以支持在類中導入外部的函數和常量,對應的結構為 use function 和 use const。

  1. <?php 
  2. namespace Name/Space { 
  3.  const FOO = 42; 
  4.  function f() { echo FUNCTION."/n"; } 
  5. namespace { 
  6.  use const Name/Space/FOO; 
  7.  use function Name/Space/f; 
  8.  echo FOO."/n"
  9.  f(); 
  10. ?> 

以上例程會輸出:

42

Name/Space/f

debugInfo() (PHP 5 >= 5.6.0, PHP 7)

加入 debugInfo(), 當使用 var_dump() 輸出對象的時候, 可以用來控制要輸出的屬性和值。

  1. <?php 
  2. class C { 
  3.  private $prop
  4.  public function construct($val) { 
  5.  $this->prop = $val
  6.  } 
  7.  public function debugInfo() { 
  8.  return [ 
  9.   'propSquared' => $this->prop ** 2, 
  10.  ]; 
  11.  } 
  12. var_dump(new C(42)); 
  13. ?> 

以上例程會輸出:

  1. object(C)#1 (1) { 
  2.  ["propSquared"]=> 
  3.  int(1764) 

標量類型聲明 (PHP 7)

標量類型聲明 有兩種模式: 強制 (默認) 和 嚴格模式。 現在可以使用下列類型參數(無論用強制模式還是嚴格模式): 字符串(string), 整數 (int), 浮點數 (float), 以及布爾值 (bool)。它們擴充了PHP5中引入的其他類型:類名,接口,數組和 回調類型。

  1. <?php 
  2. // Coercive mode 
  3. function sumOfInts(int ...$ints
  4. return array_sum($ints); 
  5. var_dump(sumOfInts(2, '3', 4.1)); 

以上例程會輸出:

int(9)

要使用嚴格模式,一個 declare 聲明指令必須放在文件的頂部,這意味著嚴格聲明標量是基于文件可配的。 這個指令不僅影響參數的類型聲明,也影響到函數的返回值聲明(參見返回值類型聲明, 內置的PHP函數以及擴展中加載的PHP函數)

返回值類型聲明 (PHP 7)

PHP 7 增加了對返回類型聲明的支持。 類似于參數類型聲明,返回類型聲明指明了函數返回值的類型。可用的類型與參數聲明中可用的類型相同。

  1. <?php 
  2. function arraysSum(array ...$arrays): array 
  3.  return array_map(function(array $array): int { 
  4.  return array_sum($array); 
  5.  }, $arrays); 
  6. print_r(arraysSum([1,2,3], [4,5,6], [7,8,9])); 

以上例程會輸出:

  1. Array 
  2. [0] => 6 
  3. [1] => 15 
  4. [2] => 24 

null合并運算符 (PHP 7)

由于日常使用中存在大量同時使用三元表達式和 isset()的情況, 我們添加了null合并運算符 (??) 這個語法糖。如果變量存在且值不為NULL, 它就會返回自身的值,否則返回它的第二個操作數。

  1. <?php 
  2. // Fetches the value of $_GET['user'] and returns 'nobody' 
  3. // if it does not exist. 
  4. $username = $_GET['user'] ?? 'nobody'
  5. // This is equivalent to: 
  6. $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'
  7.    
  8. // Coalesces can be chained: this will return the first 
  9. // defined value out of $_GET['user'], $_POST['user'], and 
  10. // 'nobody'. 
  11. $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody'
  12. ?> 

太空船操作符(組合比較符)(PHP 7)

太空船操作符用于比較兩個表達式,當$a小于、等于或大于$b時它分別返回-1、0或1, 比較的原則是沿用 PHP 的常規比較規則進行的。

  1. <?php 
  2. // Integers 
  3. echo 1 <=> 1; // 0 
  4. echo 1 <=> 2; // -1 
  5. echo 2 <=> 1; // 1 
  6. // Floats 
  7. echo 1.5 <=> 1.5; // 0 
  8. echo 1.5 <=> 2.5; // -1 
  9. echo 2.5 <=> 1.5; // 1 
  10. // Strings 
  11. echo "a" <=> "a"// 0 
  12. echo "a" <=> "b"// -1 
  13. echo "b" <=> "a"// 1 
  14. ?> 

通過 define() 定義常量數組 (PHP 7)

Array 類型的常量現在可以通過 define() 來定義,在 PHP5.6 中僅能通過 const 定義。

  1. <?php 
  2. define('ANIMALS', [ 
  3.  'dog'
  4.  'cat'
  5.  'bird' 
  6. ]); 
  7. echo ANIMALS[1]; // outputs "cat" 
  8. ?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芜湖市| 湖口县| 张掖市| 金平| 龙海市| 南平市| 凌源市| 鄂尔多斯市| 台东市| 礼泉县| 信宜市| 丹东市| 中方县| 安新县| 南华县| 太和县| 黑水县| 泽库县| 沽源县| 历史| 乌拉特后旗| 宜川县| 固原市| 台湾省| 唐海县| 托克逊县| 滨海县| 昔阳县| 陕西省| 峨眉山市| 筠连县| 抚远县| 织金县| 岢岚县| 建始县| 平安县| 台东市| 盐亭县| 广昌县| 南平市| 宣城市|