注释中的“#@ +”和“#@-”字符串是什么意思?


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';
    /**#@-*/
    ...
}

这些标记的目的是什么?

Answers:


14

这些字符习惯于 声明PHPDoc DocBlock模板

DocBlock模板的目的是减少冗余键入。例如,如果大量的类变量是私有的,则可以使用DocBlock模板将其标记为私有。DocBlock模板只是增加了在模板块中找到的所有普通DocBlock。

DocBlock模板的标头与普通DocBlock有所区别。

/**#@+
 *
 */

将其标记为DocBlock模板的文本为“ / **#@ +”-必须存在所有6个字符。DocBlock模板将应用于所有可记录元素,直到结束模板标记:

/**#@-*/

请注意,所有8个字符都必须显示为“ / **#@-* /”,以便phpDocumentor将其识别为模板。

更多信息可以在这里找到: 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模板包含两个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();
    /**#@-*/

参考这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.