PHPで、渡されたパラメータの型がintまたはnullであることを、スクリプトで表明するための表記方法です。
php 7.1の場合
php 7.1では、null許容型が用意されているので、"?int"のような指定方法が可能です。
public function someFunc(?int $param) {
...
}
以下のコードは、int値を指定する、nullを指定する、省略するの3つが可能です。
省略したときは、-1が指定されたとみなされます。
public function someFunc(?int $param = -1) {
...
}
ちなみに、TypeScriptやc#でのnull共用型の書き方は下記のとおりです。phpとは"?"を書く場所が異なるので注意が必要です。
SomeFunc(int? param)
php 7.0の場合
nullを許容することをデフォルトパラメータを記述るするところに記載する定義方法なので、nullを許容するが、省略不可なパラメータは
public function someFunc(int $param = null) {
...
}
php 5.xの場合
php 5.xの場合、タイプヒンティングの型指定として、intがそもそも指定できません。
以下のような形で、PHPDocの形式でデータ型の説明をしておくのが望ましいですが、phpインタプリタはPHPDocの定義をもとに動作するわけではありません。
ですので、someFunc("abc")といった処理を書いても関数呼び出しエラーにさせることができないです。
/**
* @param int|null $param
*/
public function someFunc($param = null) {
...
}
エラーにさせたい場合は、関数内で明示的なチェックが必要です。
public function someFunc($param = null) {
if (!is_number($param)) {
throw Exception("parameter errror");
}
}
union_type
int|null $param
のような形で、複数の型を許容するパラメータ定義を可能にするという案がRFCに挙がっていますが、php7.1までの時点では採用されていません。
// PHP7.1までの環境では、このコードは動かないので注意
public function someFunc(int|null $param = -1) {
...
}
こちらもおススメ