這篇文章跟大家介紹一下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 'Error:'.$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中文網其他相關文章!