php wecp 啟動 php7開啟強型別模式

2021-10-16 19:12:47 字數 1762 閱讀 3334

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

php7開啟強型別模式,這是php7相比之前版本效率提高的部分原因,先來看兩個例子

首先function sum($a,$b):float

return $a+$b;

var_dump(sum(1,2));

var_dump(sum(1,2.5));

輸出結果為:

float(3) float(3.5)

然後加上強型別模式

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,結果也沒有什麼問題,但是一般來說這種隱式的轉化太過於難理解,可能不是我們預期的結果。

所以我們加入強型別模式來看一下輸出結果

,**如下:

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 thrown in /home/www/learn.php on line 3

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

如果遇到這種情況,讓我們通過捕獲異常的方式來捕獲這種錯誤

**如下:

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

PHP7如何開啟opcache擴充套件

opcache 說白了就是將php源 進行快取,而不再需要編譯二進位制。php7預設已經安裝了opcahe拓展,只需要開啟即可 vim usr local php etc php.ini zend extension opcache.so cli環境下,php啟用opcache opcache.en...

PHP7開啟opcache打造強悍效能

鳥哥在部落格中說,提高php 7效能的幾個tips,第一條就是開啟opcache 記得啟用zend opcache,因為php7即使不啟用opcache速度也比php 5.6啟用了opcache快,所以之前測試時期就發生了有人一直沒有啟用opcache的事情 那麼什麼是opcache呢?opcach...

PHP7開啟opcache打造強悍效能

鳥哥在部落格中說,提高php 7效能的幾個tips,第一條就是開啟opcache 記得啟用zend opcache,因為php7即使不啟用opcache速度也比php 5.6啟用了opcache快,所以之前測試時期就發生了有人一直沒有啟用opcache的事情 那麼什麼是opcache呢?opcach...