PHP 的 Type Declarations (類型宣告)
在介紹 PHP 的 Type Declarations (類型宣告) 前,先來簡單解說一下引數與參數的意思。
- 引數 (Argument):用於呼叫函式 (function) 時所給的變數。
- 參數 (Parament):是函式中要使用的變數。
<?php
// 這裡的 $name 就是參數
public function sayHello(string $name): string
{
return 'Hello' . $name
}
$personName = 'John';
// 這裡的 $personName 就是引數
echo sayHello($personName);
這裡 sayHello(string $name)
中的 string
,就是一種 type Declarations (類型宣告),也可以稱為 Type Hint (類型提示)。
目的在說明 $name
的類型為 string
,如果使用非 string 類型的引數來呼叫函式,程式就會報錯。
PHP 的 Clean Code 建議參數都應該使用類型宣告,方便於日後維護。
如果這個參數可能為 string
類型或是 null
,可以在 string
前面加上一個問號 ?
。
<?php
// 在 string 前面加上一個問號,代表 $name 這個參數可為 string 或是 NULL
public function sayHello(?string $name): string
{
return 'Hello' . $name
}
除了可以在參數上可以做類型宣告之外,PHP 也可以在函式返回的值做類型宣告。
sayHello(?string $name): string
中的 string
,就是 Return Type Declarations (返回類型宣告)。
目的在說明此函式返回的值為 string
,如果返回的值不為 string
,程式就會報錯。
如果返回的值可以為 string
或是 null
,那麼跟剛剛一樣,我們可以在 string
前面加上一個問號 ?
。
<?php
// 在冒號後面的 string 前面加上一個問號,代表此函式返回值的類型可以為 string 或是 NULL
public function sayHello(?string $name): ?string
{
return $name
}