欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

PHP7.1中有哪些新的特性-創(chuàng)新互聯(lián)

PHP 7.1中有哪些新的特性?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)).為客戶提供專業(yè)的溫江服務(wù)器托管,四川各地服務(wù)器托管,溫江服務(wù)器托管、多線服務(wù)器托管.托管咨詢專線:18982081108

一、可空類型

可空類型主要用于參數(shù)類型聲明和函數(shù)返回值聲明。

主要的兩種形式如下:

<?php
function answer(): ?int {
 return null; //ok
}

function answer(): ?int {
 return 42; // ok
}

function say(?string $msg) {
 if ($msg) {
 echo $msg;
 }
}

從例子很容易理解,所指的就是通過 ? 的形式表明函數(shù)參數(shù)或者返回值的類型要么為指定類型,要么為 null。

此方法也可用于接口函數(shù)的定義:

<?php
interface Fooable {
 function foo(?Fooable $f);
}

但有一個(gè)需要注意的地方:如果函數(shù)本身定義了參數(shù)類型并且沒有默認(rèn)值,即使是可空的,也不能省略,否則會(huì)觸發(fā)錯(cuò)誤。如下:

<?php
function foo_nullable(?Bar $bar) {}

foo_nullable(new Bar); // 可行
foo_nullable(null); // 可行
foo_nullable(); // 不可行

但是如果以上函數(shù)的參數(shù)定義為 ?Bar $bar = null的形式,則第三種寫法也是可行的。因?yàn)?code>= null 實(shí)際上相當(dāng)于 ? 的超集,對(duì)于可空類型的參數(shù),可以設(shè)定 null 為默認(rèn)值。

二、list 的方括號(hào)簡寫

我們知道在 PHP5.4 之前只能通過 array()來定義數(shù)組,5.4之后添加了 [] 的簡化寫法(省略了5個(gè)字符還是很實(shí)在的)。

<?php
// 5.4 之前
$array = array(1, 2, 3);
$array = array("a" => 1, "b" => 2, "c" => 3);

// 5.4 及之后
$array = [1, 2, 3];
$array = ["a" => 1, "b" => 2, "c" => 3];

引申到另外一個(gè)問題上,如果我們要把數(shù)組的值賦值給不同的變量,可以通過list來實(shí)現(xiàn):

<?php
list($a, $b, $c) = $array;

是否也可以通過 [] 的簡寫來實(shí)現(xiàn)呢?

<?php
[$a, $b, $c] = $array;

以及下一個(gè)特性中會(huì)提到的list指定key

<?php
["a" => $a, "b" => $b, "c" => $c] = $array;

PHP7.1 實(shí)現(xiàn)了這個(gè)特性。但是要注意的是:出現(xiàn)在左值中的 [] 并不是數(shù)組的簡寫,是 list()的簡寫。

但是并不僅僅如此,新的list()的實(shí)現(xiàn)并不僅僅可以出現(xiàn)在左值中,也能在foreach循環(huán)中使用:

<?php
foreach ($points as ["x" => $x, "y" => $y]) {
 var_dump($x, $y);
}

不過因?yàn)閷?shí)現(xiàn)的問題,list() 和 [] 不能相互嵌套使用:

<?php
// 不合法
list([$a, $b], [$c, $d]) = [[1, 2], [3, 4]];

// 不合法
[list($a, $b), list($c, $d)] = [[1, 2], [3, 4]];

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

三、允許在 list 中指定 key

上文提到過,新的list()的實(shí)現(xiàn)中可以指定key:

<?php
$array = ["a" => 1, "b" => 2, "c" => 3];
["a" => $a, "b" => $b, "c" => $c] = $array;

這也就相當(dāng)于:

<?php
$a = $array['a'];
$b = $array['b'];
$c = $array['c'];

和以往的區(qū)別在于以往的list() 的實(shí)現(xiàn)相當(dāng)于 key 只能是 0, 1, 2, 3 的數(shù)字形式并且不能調(diào)整順序。執(zhí)行以下語句:

<?php
list($a, $b) = [1 => '1', 2 => '2'];

會(huì)得到 PHP error: Undefined offset: 0...的錯(cuò)誤。

而新的實(shí)現(xiàn)則可以通過以下方式來調(diào)整賦值:

<?php
list(1 => $a, 2 => $b) = [1 => '1', 2 => '2'];

不同于數(shù)組的是,list并不支持混合形式的key,以下寫法會(huì)觸發(fā)解析錯(cuò)誤:

<?php
// Parse error: syntax error, ...
list($unkeyed, "key" => $keyed) = $array;

更復(fù)雜的情況,list也支持復(fù)合形式的解析:

<?php
$points = [
 ["x" => 1, "y" => 2],
 ["x" => 2, "y" => 1]
];

list(list("x" => $x1, "y" => $y1), list("x" => $x2, "y" => $y2)) = $points;

$points = [
 "first" => [1, 2],
 "second" => [2, 1]
];

list("first" => list($x1, $y1), "second" => list($x2, $y2)) = $points;

以及循環(huán)中使用:

<?php
$points = [
 ["x" => 1, "y" => 2],
 ["x" => 2, "y" => 1]
];

foreach ($points as list("x" => $x, "y" => $y)) {
 echo "Point at ($x, $y)", PHP_EOL;
}

四、void 返回類型

PHP7.0 添加了指定函數(shù)返回類型的特性,但是返回類型卻不能指定為void,7.1 的這個(gè)特性算是一個(gè)補(bǔ)充:

<?php
function should_return_nothing(): void {
 return 1; // Fatal error: A void function must not return a value
}

以下兩種情況都可以通過驗(yàn)證:

<?php
function lacks_return(): void {
 // valid
}

function returns_nothing(): void {
 return; // valid
}

定義返回類型為void的函數(shù)不能有返回值,即使返回null也不行:

<?php
function returns_one(): void {
 return 1; // Fatal error: A void function must not return a value
}

function returns_null(): void {
 return null; // Fatal error: A void function must not return a value
}

此外void也只適用于返回類型,并不能用于參數(shù)類型聲明,或者會(huì)觸發(fā)錯(cuò)誤:

<?php
function foobar(void $foo) { // Fatal error: void cannot be used as a parameter type
}

類函數(shù)中對(duì)于返回類型的聲明也不能被子類覆蓋,否則會(huì)觸發(fā)錯(cuò)誤:

<?php
class Foo
{
 public function bar(): void {
 }
}

class Foobar extends Foo
{
 public function bar(): array { // Fatal error: Declaration of Foobar::bar() must be compatible with Foo::bar(): void
 }
}

五、類常量屬性設(shè)定

這個(gè)特性說起來比較簡單,就是現(xiàn)在類中的常量支持使用public、privateprotected修飾了:

<?php
class Token {
 // 常量默認(rèn)為 public
 const PUBLIC_CONST = 0;

 // 可以自定義常量的可見范圍
 private const PRIVATE_CONST = 0;
 protected const PROTECTED_CONST = 0;
 public const PUBLIC_CONST_TWO = 0;

 // 多個(gè)常量同時(shí)聲明只能有一個(gè)屬性
 private const FOO = 1, BAR = 2;
}

此外,接口(interface)中的常量只能是public屬性:

<?php
interface ICache {
 public const PUBLIC = 0;
 const IMPLICIT_PUBLIC = 1;
}

為了應(yīng)對(duì)變化,反射類的實(shí)現(xiàn)也相應(yīng)的豐富了一下,增加了getReflectionConstantgetReflectionConstants兩個(gè)方法用于獲取常量的額外屬性:

<?php
class testClass {
 const TEST_CONST = 'test';
}

$obj = new ReflectionClass( "testClass" );
$const = $obj->getReflectionConstant( "TEST_CONST" );
$consts = $obj->getReflectionConstants();

六、多條件 catch

在以往的try ... catch語句中,每個(gè)catch只能設(shè)定一個(gè)條件判斷:

<?php
try {
 // Some code...
} catch (ExceptionType1 $e) {
 // 處理 ExceptionType1
} catch (ExceptionType2 $e) {
 // 處理 ExceptionType2
} catch (\Exception $e) {
 // ...
}

新的實(shí)現(xiàn)中可以在一個(gè)catch中設(shè)置多個(gè)條件,相當(dāng)于或的形式判斷:

<?php
try {
 // Some code...
} catch (ExceptionType1 | ExceptionType2 $e) {
 // 對(duì)于 ExceptionType1 和 ExceptionType2 的處理
} catch (\Exception $e) {
 // ...
}

關(guān)于PHP 7.1中有哪些新的特性問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前題目:PHP7.1中有哪些新的特性-創(chuàng)新互聯(lián)
地址分享:http://aaarwkj.com/article36/dpiisg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、建站公司、做網(wǎng)站、動(dòng)態(tài)網(wǎng)站、面包屑導(dǎo)航、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
亚洲欧美一区日韩尤物| 91伊人日本在线视频| 日本在线人妻中文字幕| 亚洲熟女av综合网五月| 欧美精品黑人三级精品| 国产精品久久久久大屁股精品性色| 99久久久国产精品蜜臀| 91熟女成人精品一区二区| 福利在线午夜绝顶三级| 欧美激情网页一区三区| 日本中文字幕一二三四区| 日韩欧美精品在线观看免费| 国内精品久久大型新型| 九九热视频在线观看色| 精品免费av在线播放| 亚洲天堂,男人的天堂| av东京热狠狠男人的天堂| 国产精品推荐在线观看| 夜夜草视频在线免费观看| 欧美日韩福利视频在线| 亚洲精品一区二区99| 日本午夜节目在线观看| 国产成人91精品免费看片| 国产在线精品成人欧美| 日韩欧美国产综合第一页| 粉嫩在线一区二区懂色| 国产精品黄色自拍合集| 91精品免费播放在线观看| 久久精品国产av一一区| 久久精品国产亚洲av超一| 日韩新片免费专区在线| 亚洲国产精品热久久网站| 亚洲最大av在线精品国产| 国产亚洲综合精品综合区| 日韩视频在线不卡观看| 亚洲av成人永久网站一区| 国产女主播在线观看免费观看| 国产婷婷色三区一区二区| 亚洲字幕中文在线乱码mv| 亚洲av在线av天堂| 日韩中文字幕一区二区不卡 |