コメントで「#@ +」と「#@-」の文字列は何を意味しますか?


15

Magento 2のいくつかのクラスのコメントには、多くの「#@ +」と「#@-」の文字列があります。 \Magento\Customer\Api\Data\AttributeMetadataInterface

interface AttributeMetadataInterface extends \Magento\Framework\Api\MetadataObjectInterface
{
    /**#@+
     * Constants used as keys of data array
     */
    const ATTRIBUTE_CODE = 'attribute_code';
    ...
    const IS_SEARCHABLE_IN_GRID = 'is_searchable_in_grid';
    /**#@-*/
    ...
}

これらのマーカーの目的は何ですか?

回答:


14

これらの文字は、PHPDoc DocBlockテンプレートの宣言に使用されます。

DocBlockテンプレートの目的は、冗長な入力を減らすことです。たとえば、多数のクラス変数がプライベートである場合、DocBlockテンプレートを使用してプライベートとしてマークします。DocBlockテンプレートは、テンプレートブロックで見つかった通常のDocBlockを単純に拡張します。

DocBlockテンプレートは、ヘッダーによって通常のDocBlockと区別されます。

/**#@+
 *
 */

これをDocBlockテンプレートとしてマークするテキストは「/ **#@ +」です-6文字すべてが存在する必要があります。DocBlockテンプレートは、終了テンプレートマーカーまですべてのドキュメント化可能な要素に適用されます。

/**#@-*/

phpDocumentorがテンプレートとして認識するために、8文字すべてが「/ **#@-* /」として表示される必要があることに注意してください。

詳細については、http//codingexplained.com/coding/php/how-to-use-docblock-templates-in-phpdocをご覧ください。

Magentoの公式ドキュメントにもいくつかの説明があります:http : //devdocs.magento.com/guides/v2.0/coding-standards/docblock-standard-general.html


6

同じタイプの複数の連続した要素の宣言がある場合、DocBlockの同じコンテンツがそれらすべてに関連する可能性があります。この場合、これらの要素の個々のDocBlockは、DocBlockテンプレートで置き換えることができます。

DocBlockテンプレートは、2つのDocBlockコメントで構成されています。

開始コメントはグループの最初の要素の前にあり、#@ +を使用して区別され、次のようにフォーマットされます。

/**#@+
 *
 */

終了コメントは、グループの最後の要素の後にあり、#@-を使用して区別され、次のようにフォーマットされます。/**#@-*/

たとえば、複数のクラス定数または属性の宣言:

class Mage_Core_Model_Layout extends Varien_Simplexml_Config
{
    /**#@+
     * Supported layout directives
     * @var string
     */
    const TYPE_BLOCK = 'block';
    const TYPE_CONTAINER = 'container';
    /**#@-*/

    /**#@+
     * Scheduled structure elements operations
     *
     * @var array
     */
    protected $scheduledMoves   = array();
    protected $scheduledRemoves = array();
    /**#@-*/

参照はこちら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.