首頁 >後端開發 >PHP7 >php7如何開啟強型別模式

php7如何開啟強型別模式

醉折花枝作酒筹
醉折花枝作酒筹轉載
2021-06-01 09:17:092852瀏覽

這篇文章跟大家介紹一下php7開啟強型別模式的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

php7如何開啟強型別模式

我們知道php是一種弱型別的程式語言,但php7已經有所改變,可以支援程式碼開啟強型別模式了,好消息。

php7開啟強型別模式,這是php7相較於先前版本效率提升的部分原因,先來看兩個範例

首先

<?php
function sum($a,$b):float
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));
?>

輸出結果為:

float(3) float(3.5)

然後加上強型別模式

<?php
define(strict_types=1);//注意这一句必须要放在第一行,而且顶格
function sum($a,$b):float
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));
?>

輸出結果為:

float(3) float(3.5)

從這裡好像看不出差別,因為int->float類型的轉換是允許的。

咱們再看一個例子:

function sum(int $a,int $b):float
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));

輸出結果為:

float(3) float(3)

這是因為2.5被強制轉換為int型,值為2,1 2=3,結果也沒有什麼問題,但是一般來說這種隱式的轉化太難理解,可能不是我們預期的結果。

所以我們加入強型別模式來看輸出結果,程式碼如下:

<?php
declare(strict_types=1);
function sum(int $a,int $b):float
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));
?>

輸出結果為:

float(3)
Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, float given, called in /home/www/learn.php on line 8 and defined in /home/www/learn.php:3 Stack trace: #0 /home/www/learn.php(8): sum(1, 2.5) #1 {main} thrown in /home/www/learn.php on line 3

這裡可以看出,強型別模式生效了, sum(1,2.5)一句話出錯了,2.5因為不是int型別導致程式出現錯誤。

如果遇到這種情況,讓我們透過捕捉例外的方式來捕捉這種錯誤

程式碼如下:

<?php
declare(strict_types=1);
function sum(int $a,int $b):float
{
        return $a+$b;
}
try {
var_dump(sum(1,2));
var_dump(sum(1,2.5));
}
catch(TypeError $e) {
        echo &#39;Error:&#39;.$e->getMessage();
}
?>

輸出結果為:

float(3) 
Error:Argument 2 passed to sum() must be of the type integer, float given, called in /home/www/learn.php on line 9

推薦學習:php影片教學

#

以上是php7如何開啟強型別模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除