generated at
PHPDoc

GPT-4
PHPDocコメントは、通常、対象となるコード(クラス、メソッド、プロパティなど)の直前に配置され、 /** で始まり */ で終わります。各行はアスタリスク * で始めるのが一般的です。

php
/** ここに説明文を記述します。 */

クラスのドキュメント
@package :クラスが属するパッケージを指定。
@author :クラスの作成者。
@version :クラスのバージョン情報。

メソッドのドキュメント
@param :メソッドの引数を説明。型と変数名、説明を記述。
@return :メソッドの返り値の型と説明。
@throws :メソッドが投げる可能性のある例外。
@param-immediately-invoked-callable
@param-later-invoked-callable
遅延評価かどうか?
@param-closure-this
プロパティのドキュメント
@var :プロパティの型と説明。

その他の一般的なタグ
@deprecated :非推奨であることを示す。使用を避けるべき理由や代替案を記述。
@see :関連するクラスやメソッドへの参照を提供。
@example :使用例を提供。
@inheritdoc :親クラスやインターフェースのドキュメントを継承。

型の指定
単一型の場合:
php
/** @var string ユーザー名 */ private $username;
複数の型の場合(ユニオン型):
php
/** @param int|string $id ユーザーID */ public function setId($id) {}
配列の場合:
php
/** @var int[] ユーザーのID一覧 */ private $userIds;
ジェネリックな配列の場合:
php
/** @var array<string, int> ユーザー名とIDのマッピング */ private $userMap;
連想配列
php
/** * @var array{ email: string, username: string } */
これはtsでの { email: string, username: string } と同等のイメージ
array というキーワードを使っているのに別にarrayでもないという紛らわしさ
連想配列の配列
php
/** * @var array<array{ email: string, username: string }> */
php
/** * @var array{ email: string, username: string }[] */
これはtsでの Array<{ email: string, username: string }> と同等のイメージ



inline @var
php
/** @var Foo $foo */ $foo = createFoo();
あまり使うべきでない
強制的にその型と見なされる
PHPStanは常にそれを信頼する
inline @var はシンボルのすべての使用箇所で繰り返し記述する必要がある
代替案
stab fileを使う
assert()を使う
要件が満たされない場合にランタイムで例外が投げられる
php
$foo = createFoo(); assert($foo instanceof Foo);