相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
PHP 7.0新增加的特性介紹
?? 運(yùn)算符(NULL 合并運(yùn)算符) 把這個(gè)放在第一個(gè)說(shuō)是因?yàn)槲矣X(jué)得它很有用。用法: $a = $_GET['a'] ?? 1;它相當(dāng)于: <?PHP $a = isset($_GET['a']) ? $_GET['a'] : 1; 我們知道三元運(yùn)算符是可以這樣用的: $a ?: 1但是這是建立在 $a 已經(jīng)定義了的前提上。
?? 運(yùn)算符(NULL 合并運(yùn)算符)
把這個(gè)放在第一個(gè)說(shuō)是因?yàn)槲矣X(jué)得它很有用。用法:
$a = $_GET['a'] ?? 1;
它相當(dāng)于:
<?php $a = isset($_GET['a']) ? $_GET['a'] : 1;
我們知道三元運(yùn)算符是可以這樣用的:
$a ?: 1 但是這是建立在 $a 已經(jīng)定義了的前提上。新增的 ?? 運(yùn)算符可以簡(jiǎn)化判斷。
1.函數(shù)返回值類型聲明
官方文檔提供的例子(注意 ... 的邊長(zhǎng)參數(shù)語(yǔ)法在 PHP 5.6 以上的版本中才有):
<?php function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } print_r(arraysSum([1,2,3], [4,5,6], [7,8,9])); 從這個(gè)例子中可以看出現(xiàn)在函數(shù)(包括匿名函數(shù))都可以指定返回值的類型。
這種聲明的寫法有些類似于 Swift:
func sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting }
這個(gè)特性可以幫助我們避免一些 PHP 的隱式類型轉(zhuǎn)換帶來(lái)的問(wèn)題。在定義一個(gè)函數(shù)之前就想好預(yù)期的結(jié)果可以避免一些不必要的錯(cuò)誤。
不過(guò)這里也有一個(gè)特點(diǎn)需要注意。PHP 7 增加了一個(gè) declare 指令:strict_types,既使用嚴(yán)格模式。
使用返回值類型聲明時(shí),如果沒(méi)有聲明為嚴(yán)格模式,如果返回值不是預(yù)期的類型,PHP 還是會(huì)對(duì)其進(jìn)行強(qiáng)制類型轉(zhuǎn)換。但是如果是嚴(yán)格模式, 則會(huì)出發(fā)一個(gè) TypeError 的 Fatal error。
強(qiáng)制模式:
<?php function foo($a) : int { return $a; } foo(1.0);
以上代碼可以正常執(zhí)行,foo 函數(shù)返回 int 1,沒(méi)有任何錯(cuò)誤。
嚴(yán)格模式:
<?php declare(strict_types=1); function foo($a) : int { return $a; } foo(1.0);