สตริง“ # @ +” &“ # @ -” หมายถึงอะไรในความคิดเห็น?


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 สามารถเพิ่ม DocBlocks ปกติที่พบในบล็อกแม่แบบได้

เทมเพลต DocBlock นั้นแตกต่างจาก DocBlock ทั่วไปตามส่วนหัว

/**#@+
 *
 */

ข้อความที่ทำเครื่องหมายสิ่งนี้ว่าเป็นแม่แบบ DocBlock คือ "/ ** # @ +" - ต้องมีอักขระทั้งหมด 6 ตัว แม่แบบ DocBlock ถูกนำไปใช้กับองค์ประกอบที่สามารถบันทึกได้ทั้งหมดจนกระทั่งเครื่องหมายสิ้นสุดเทมเพลต

/**#@-*/

โปรดทราบว่าอักขระทั้ง 8 ตัวจะต้องปรากฏเป็น "/ ** # @ - * /" เพื่อให้ phpDocumentor จดจำได้ว่าเป็นเทมเพลต

ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่: http://codingexplained.com/coding/php/how-to-use-docblock-templates-in-phpdoc

คำอธิบายบางอย่างมีอยู่ในเอกสารวีโอไอพีอย่างเป็นทางการ: http://devdocs.magento.com/guides/v2.0/coding-standards/docblock-standard-general.html


6

หากมีการประกาศองค์ประกอบที่ต่อเนื่องหลายประเภทเดียวกันเนื้อหาเดียวกันของ DocBlock อาจเกี่ยวข้องกับองค์ประกอบทั้งหมด ในกรณีนี้ DocBlocks ส่วนบุคคลสำหรับองค์ประกอบเหล่านั้นอาจถูกแทนที่ด้วยแม่แบบ 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();
    /**#@-*/

อ้างอิงที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.