PHP7具有很多用於編寫高性能、高效代碼的新特性,同時也以除了一些歷史版本中過時的特性,這些過時的特性如果在PHP7中使用會觸發一個error錯誤。目前大多數的fatal錯誤都可以異常捕獲,所以PHP不再顯示一些不標準的fatal錯誤i,取而代之的是拋出一個攜帶很多可用信息的異常。
一、OOP特性
在使用PHP7之前,我們在函數和類之間傳遞參數時不必聲明變量類型,同樣在返回數據時也不必聲明變量類型。任何數據類型都可以被傳遞返回。
——————〉這樣就給PHP帶來了很大的問題:PHP不清楚你傳遞的是什麼類型的變量,函數和方法接收到的變量也不知道是什麼類型。爲了解決這個問題,PHP7引入了類型聲明,目前明確的有兩類變量可以聲明類型:形參、返回值。
1.形參類型聲明
PHP7支持的形參聲明的類型有整型、浮點型、字符串型、布爾類型,可以用在函數形參及對象的方法形參上。
class Person{
public function age(int $age){
return $age;
}
public function name(string $name){
return $name;
}
public function isAlive(bool $alive){
return $alive;
}
}
$person = new Person();
echo $person->name('Bob');
echo $person->age('19');
echo $person->isAlive(TRUE);
默認情況下,形參聲明不是完全被限制的,這就意味着我們可以傳遞一個浮點數給期望得到整型數的方法。也可以做些限制,如: declare(strict_type = 1);
此時我們若傳遞一個浮點數給age的話,便會得到一個Uncaught Type Error,這個fatal錯誤告訴我們,Person : : age只能接受一個整型數而非浮點數。在需要字符串形參的情況下,如果你不提供字符串形參的話,也會出現類似報錯。例如:
echo $person->alive('true');
2.返回類型聲明
PHP7 無論在函數還是對象的方法中都支持返回類型的聲明。
class Person{
public function age(float $age) :string{
return 'Age is '.$age;
}
public function name(string $name) : string{
return $name;
}
public function isAlive(bool $alive) : string{
return ($alive)?'yes':'no';
}
}
上述代碼所示,返回類型聲明使用了data_type語法,對於形參類型聲明與返回類型聲明一樣的情況是無影響的。
3.命名空間與use關鍵字批量聲明
當代碼量規模變大的時候,很多類會放在命名空間下,這樣方便維護和管理。但是當出現一個命名空間下有很多類而且我們要一次性使用多個類時,我們還要把他們逐個聲明在代碼的頂部。