0

最近、いくつかの引数がコメントを介してメソッドに渡されている興味深いコード ベースを見ました。みたいに見えた

/*
 * @attribute default-method
 */

もちろん、これはインスタンス化されるクラスのデフォルト メソッドを宣言します。

これは何ですか?それはどのように行われますか?これの例はどこかにありますか?

リターンのフォーマットなどを制御するために使用されていたので、確かに非常に興味深く見え、私が作成したクラスから多くのがらくたを確実に取り除くでしょう。

4

4 に答える 4

6

引数はコメント経由でメソッドに渡されませんでした。コメントは (おそらく) PHPDocを使用して、API ドキュメントの生成を可能にします (また、開発者がソースを見たときに何が起こっているかを簡単に確認できるようにします)。

これはあなたが話しているようなものですか?:

/**
 * Set the data
 *
 * @access public
 * @param string $field
 * @param mixed $value
 */
public function __set($field, $value)
{
  $this->_data[$field] = $value;
}

/**
 * Get the data
 *
 * @access public
 * @param string $field
 * @return mixed
 */
public function __get($field)
{
  return isset($this->_data[$field]) ? $this->_data[$field] : NULL;
}

その場合、通常どおり、パラメーターが引き続き渡され、戻り値が返されることに気付くでしょう。コードを文書化するためにPHPDocが使用されているだけです。

于 2012-04-04T11:09:04.800 に答える
1

他の人が述べているように、ドキュメントの生成に使用できます。

ただし、このスタイルのコメントを使用して、アプリケーション ロジック (多くの場合、属性または注釈と呼ばれます) を確実に実装できます。次の例を検討してください。

<?php
/**
 * @Foo Bar
 */
function sum($a, $b) {
  return $a + $b;  
}

$function = new ReflectionFunction('sum');
$attributes = $function->getDocComment();

var_dump($attributes);
// string(29) "/** * @attribute Foo Bar */" 

その後、そのコメントを解析して、その情報に対して必要なことを行うことができます。

実際、Doctrineはこの「パターン」を多用しています。

于 2012-04-04T11:15:50.747 に答える
0

コメントは、javadocへの単なる適応です。基本的に、サードパーティのソフトウェアはクラスを簡単に解析し、コメントとメソッドシグネチャをコメントから直接抽出して、きれいなhtmlまたはpdfドキュメントを生成できます。前の投稿者が言及しているように、コメントを使用するサードパーティソフトウェアの1つであるphpdocを見てください。

于 2012-04-04T11:19:34.387 に答える
0

実際には2つのアスタリスクです

/**
 * @attribute blah
 */

PHP ドキュメンタを参照してください

于 2012-04-04T11:09:51.467 に答える