0

私はPHPDocを使用しています。文字列パラメーターを受け入れるメソッドがあります。その文字列は、特定のインターフェイスを実装するクラスの名前にする必要がありますIMyInterface

私はすべきですか:

/**
 * @param string $class_name
 */
public function myMethod($class_name) {}

また

/**
 * @param IMyInterface $class_name
 */
public function myMethod($class_name) {}

クラスとインターフェイスは PHP のファースト クラスではないため、おそらく後者だと思います。しかし、どちらのオプションにも何か問題があるようです。

4

2 に答える 2

0

あなたのユースケースでは、「文字列」が正しいです。なぜなら、渡すデータ型の種類を正確にリーダーに伝えているからです。ユーザーが実際に IMyInterface 実装者の具体的なクラス インスタンスを渡そうとした場合、コードは間違いなくチョークします。

メソッドが、使用可能なインターフェイスのリストを表す文字列の特定のリストを受け入れるようにのみ構築されている場合は、1 つのパラメーターの説明ではなく、メソッドの長い説明でこれを完全に説明することをお勧めします。また、@see タグを使用して、このメソッドが受け入れるように構築されたすべてのインターフェイスのドキュメントへのリンクを提供します。そうすれば、@param タグは読者に「おい、文字列が必要だ」と真に伝え、メソッドの説明は、メソッドがその文字列を取得して定義されたインターフェイスに関連付ける方法を説明し、@see タグは読者のジャンプに役立ちますインターフェイス自体のいずれか/すべてに直接。

IDE オートコンプリートに関して、一部の IDE はメソッド コード内で "/** @var IMyInterface $localMethodVar */" を解釈し、IMyInterface の定義済みインスタンスであるかのように $localMethodVar でオートコンプリートを提供します。

于 2013-09-24T13:53:04.217 に答える