亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP類型聲明特性實例分析

發布時間:2022-05-10 15:52:13 來源:億速云 閱讀:143 作者:iii 欄目:編程語言

這篇文章主要介紹“PHP類型聲明特性實例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“PHP類型聲明特性實例分析”文章能幫助大家解決問題。

PHP類型聲明特性實例分析

最近在研究PHP7的新特性,發現PHP也開始搞類型聲明了,這么做的好處很明顯:能提高程序運行速度。

下面開始介紹這一新特性:

默認情況下,所有的PHP文件都處于弱類型校驗模式。

PHP7+增加了類型聲明的特性,類型聲明有兩種模式:

  • 強制模式 (默認模式) 我的理解就是強制轉換成需要的類型,不嚴格區分類型而是強轉,類型不一致不報錯

  • 嚴格模式 嚴格校驗類型,類型與聲明的不一致,報錯

標量類型聲明語法格式:

declare(strict_types=1);

其中strict_types的值:

  • 1表示嚴格類型校驗模式,作用于函數調用和返回語句;

  • 0表示弱類型校驗模式

可以使用的類型參數有:

  • string

  • int

  • float

  • bool

  • interfaces

  • array

  • callable

強制模式(默認模式)

<?php

function sum(int ...$ints)
{
   return array_sum($ints);
}

print(sum(1, '2', 3.1));
?>

以上程序執行輸出結果為:6

分析一下即:將字符串類型的'2'轉換成整型的2,將float類型的3.1轉換為整型的3后再相加,得出結果6。

嚴格模式

<?php

declare(strict_types=1);

function sum(int ...$ints)
{
   return array_sum($ints);
}

print(sum(1, '2', 3.1));
?>

以上程序因為采用了嚴格模式,因為第二個參數不是int類型,執行結果報錯如下:

PHP Fatal error:  Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……

返回類型聲明

PHP7+ 增加了對返回類型聲明的支持,返回類型聲明指明了函數返回值的類型。

可以聲明的返回類型有:

  • string

  • int

  • float

  • bool

  • interfaces

  • array

  • callable

我踩的坑

這里我還真趟過坑,在新版本的phpstorm中會根據返回值類型出現提示代碼,引導添加返回類型聲明,我就加上了。但是后面因為業務的變化或者代碼優化只修改了返回值(比如之前返回的是array,修改后返回了int),卻忘記了修改返回類型聲明(畢竟習慣了PHP弱語言類型這么多年了...),這樣是會拋出異常導致報錯的,這就是我踩到的坑,小伙們們在使用過程中要注意。

思考

GO語言是不會出現我上面說的問題的, 因為如果返回值類型和返回類型聲明是編譯不通過的,編譯的時候就會報錯。

而PHP作為弱類型語言,雖然做了返回類型聲明這種優化,但是語言執行前不需要我們編譯,直接發布運行,也就不能做到go語言的“編譯報警”了,PHP會在執行的時候直接拋出異常。

<?php
declare(strict_types=1);

function returnIntValue(int $value): int
{
   return $value;
}

print(returnIntValue(5));
?>

以上程序執行輸出結果為:5

返回類型聲明錯誤示例

<?php
declare(strict_types=1);

function returnIntValue(int $value): int
{
   return $value + 3.0;
}

print(returnIntValue(1));
?>

以上程序由于采用了嚴格模式,返回值必須是 int,但是計算結果是float,導致報錯,執行輸出結果為:Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...

void 函數

注意:定義返回類型為 void 的函數不能有返回值,即使返回 null 也不行。

返回值聲明為 void 類型的方法要么干脆省去 return 語句,要么使用一個空的 return 語句。

實例

<?php
function exchange(&$left, &$right) : void
{
    if ($left === $right) {
        return;
    }

    $tmp = $left;
    $left = $right;
    $right = $tmp;
}

$a = 1;
$b = 2;
var_dump(exchange($a, $b), $a, $b);

以上實例輸出結果:

null int(2) int(1)

關于“PHP類型聲明特性實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

耿马| 衡阳市| 保山市| 广昌县| 宜昌市| 定州市| 合阳县| 谷城县| 建平县| 嘉峪关市| 宁乡县| 台中县| 万宁市| 山阴县| 永昌县| 内乡县| 扎鲁特旗| 天全县| 卢湾区| 舞阳县| 昌吉市| 饶阳县| 准格尔旗| 沂水县| 丹巴县| 花莲市| 时尚| 泸水县| 锡林浩特市| 常山县| 邳州市| 公安县| 昌邑市| 永嘉县| 汤原县| 甘孜| 通海县| 乐平市| 泰来县| 阳原县| 鄄城县|