型宣言
関数宣言およびプロパティに型を記述すること
英語: type declaration
https://www.php.net/manual/ja/language.types.declarations.php
引数には全てのデータ型が記述できるわけではなく、型宣言できない型もある。
builtin types (組み込み型)
型宣言において組み込み型として記述できるのは正式な型名のみで、なおかつ
PHP 5との後方互換性
以下のコードはPHP5とPHP7以降で後方互換性がなくなっている
code:php
<?php
namespace My;
class string{}
function s(string $v) {
var_dump($v);
}
s(new string);
動作確認 https://3v4l.org/faC7Y
PHP 5では My\stringクラスとして定義され、問題なく動作する
PHP 7では型と同名のクラスを定義することができなくなった
余談だが、PHP-Parserではv1.2.0で上記の制約により組み込み型と同名のクラス名の末尾に_が追加され、互換性がなくなった。