我們知道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...