web-dev-qa-db-ja.com

クラスで@paramはどういう意味ですか?

クラスを作成するときの@paramの意味は?私が理解している限り、変数がどのようなデータ型であり、関数がどのような値を返すかをスクリプトに伝えるために使用されていますか?例えば:

_/**
 * @param string $some
 * @param array $some2
 * @return void
 */
_

それを行う別の方法はありませんか。私はvoid function() { ... }などのことを考えています。そして、変数についてはおそらく(int)$ test;

23
Chris

@paramはPHPでは特別な意味はありません。通常、コメント内でドキュメントを作成するために使用されます。あなたが提供した例はまさにそれを示しています。

ドキュメンテーションツールを使用する場合、@param@summary、およびその他の同様の値(ツールの洗練度に依存)のコードを精査して、コードの適切にフォーマットされたドキュメンテーションを自動的に生成します。

24
zzzzBov

他の人が言及しているように、あなたが参照している@paramはコメントの一部であり、構文的に重要ではありません。ドキュメントジェネレーターにヒントを提供するためだけにあります。 PHPDoc プロジェクトを見ると、サポートされているディレクティブと構文の詳細を確認できます。

質問の2番目の部分についてお話しします...私の知る限り、PHPで戻り値の型を指定する方法はありません。また、パラメーターを特定のプリミティブ型(文字列、整数など)にすることもできません。

ただし、PHP 5.1以降)のように、パラメータを配列、オブジェクト、または特定のタイプのオブジェクトにする必要があります。

function importArray(array $myArray)
{
}

このメソッドを配列以外のもので呼び出そうとすると、PHPはエラーをスローします。

class MyClass
{
}

function doStuff(MyClass $o)
{
}

MyClass以外のタイプのオブジェクトを使用してdoStuffを呼び出そうとすると、PHPは再びエラーをスローします。

3
NuclearDog

私はこれが古いことを知っていますが、参考までに、質問の2番目の部分の答えはPHP7です。

// this function accepts and returns an int
 function age(int $age): int{

  return 18;
}
2
fs_tigre

PHPはコメントにまったく気づいていません。これは、メソッドがコードを読みやすく理解しやすくするためにのみ使用するパラメーターを説明するために使用されます。

また、適切なコードプラクティスでは、ドキュメントジェネレーターに特定の名前(@paramなど)を使用することをお勧めします。

一部のIDEは、関連するメソッドの上にホバーを使用すると、@paramおよびその他の情報をツールチップに含めます。

1
kba

@paramは、入力パラメーターのタイプが何であるかを説明する説明コメントの一部です。コード構文とは関係ありません。 WhatsコードとWhatsコメントを簡単に確認するには、Notepad ++のようなカラー対応のエディターを使用してください。

0
tim