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

php7如何開啟強型別模式

醉折花枝作酒筹
發布: 2023-02-17 22:54:01
轉載
2824 人瀏覽過

這篇文章跟大家介紹一下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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板