null
PHPDoc で変数を記述するときに、いつ型としてを使用するかについて混乱しています。型のヒントは、外部の呼び出し元が予測して従うべき希望と期待を記述することになっているのでしょうか、それとも、実際には 1 つの非常に具体的な型になることを望んでいても、変数のすべての可能な型を文書化することになっているのでしょうか?
例 1: デフォルト値。次の関数は、null 以外の値のみを想定しています。ただし、値が渡されない場合は、デフォルトで、null
何かが渡されたかどうかを判断する方法として明示的にチェックし、その場合に特別な値を返します。外部呼び出し元が整数以外を渡さないことを願っています。以下のようにタイプnull
で使用する必要がありますか、それとも、何かが渡された場合に渡したいものであるため、指定する必要がありますか?@param
int
/**
* @param int|null $bar
*/
function foo($bar = null) {
if(is_null($bar)) {
return 'ABC';
}
return doSomething($bar);
}
例 2: インスタンス プロパティ。$bar に整数のみを含めたいとします。つまり、bar に何も設定されていない場合、このインスタンス プロパティのデフォルトの PHP 値は null です。$bar を使用するすべての場所で、以下のように null 型の可能性があることを考慮する必要がありますか?
class Foo {
/**
* @var int|null
*/
public $bar;
/**
* @param int|null $bar
*/
public setBar( $bar) {
$this->bar = $bar;
}
/**
* @return int|null
*/
public function getBar() {
return $this->bar;
}
}
基本的に、技術的にはその値である可能性があるため、ほぼすべて@param
の@var
宣言を散らかしていることに気づきます。|null
しかし、実際にはそうすべきではありません。ほとんどすべての型に の可能性が含まれていることnull
を期待する必要がありますか、またはそれを想定する必要がありますnull
か?