ฉันสามารถใช้เครื่องหมายแฮช (#) เพื่อแสดงความคิดเห็นใน PHP ได้ไหม?


144

ฉันไม่เคยเห็นไฟล์ PHP ใช้แฮช ( #) เพื่อแสดงความคิดเห็น แต่วันนี้ฉันรู้ว่าฉันทำได้จริง! ฉันสมมติว่ามีเหตุผลว่าทำไมทุกคนใช้//แทนดังนั้นที่นี่ฉัน

มีเหตุผลอะไรนอกเหนือจากความชอบส่วนตัวที่จะใช้//แทน#ความคิดเห็น?


16
นั่นคือแฮช (หรือปอนด์หรือสี่เหลี่ยมขึ้นอยู่กับประเทศที่คุณอยู่) ไม่ใช่แท็กแฮช แฮชแท็กเป็นวิธีการจัดหมวดหมู่เนื้อหาบน Twitter
เควนติน

คุณสามารถใช้การยกเว้น HTML & # 35; หากคุณต้องการสัญลักษณ์ # ในรหัสของคุณ
dotoree

22
ฉันคิดว่า#สัญลักษณ์นั้นถูกเรียกว่าแท็กแฮช ... :( ไม่มีเหตุผลที่จะลงคะแนนเสียงอย่างหนักบทเรียนที่ได้เรียนรู้
Hubro

3
ฉันชอบที่จะใช้#สำหรับการแสดงความคิดเห็นบรรทัดเดียว//สำหรับการแสดงความคิดเห็นรหัสและ/* ... */บล็อกความคิดเห็น
จอห์นแมกโนเลีย

เป็นไปได้ซ้ำซ้อนกับPHP Comments # vs //
nawfal

คำตอบ:


163

คำตอบสำหรับคำถามมีความแตกต่างระหว่างการใช้ "#" และ "//" สำหรับความคิดเห็นบรรทัดเดียวใน PHP หรือไม่? คือไม่มี

ไม่มีความแตกต่าง โดยการดูที่ส่วนการแยกวิเคราะห์ของซอร์สโค้ด PHP ทั้ง "#" และ "//" ได้รับการจัดการโดยรหัสเดียวกันและดังนั้นจึงมีพฤติกรรมที่แน่นอนเดียวกัน


3
โปรดทราบว่า N ++ (6.55) ไม่สามารถพับ#ความคิดเห็นได้อย่างถูกต้องเสมอ ฉันสังเกตเห็นว่าในไฟล์ PHP ขนาดใหญ่: 2k บรรทัดขึ้นไป บางครั้งมันเริ่มพับโค้ดในหลาย ๆ #
CoR

1
ฉันชอบ#ความคิดเห็นมากกว่า//คนอื่น .. แต่ฉันสงสัยอยู่เสมอว่า#PSR บ่นได้หรือไม่?
Stphane

5
แฮชมีประโยชน์เมื่ออธิบายเส้นทางเช่น แทน# /news (code here) // /news (code here)สำหรับไฟล์ Lok 2k ฉันคิดว่ามีปัญหาอื่น ๆ นอกเหนือจากแท็กแสดงความคิดเห็นที่จะใช้ :)
27470 Juha Untinen

11

เอกสารของ PHP อธิบายความเป็นไปได้ที่แตกต่างของความคิดเห็น ดูhttp://www.php.net/manual/en/language.basic-syntax.comments.php

แต่ไม่ได้พูดอะไรเกี่ยวกับความแตกต่างระหว่าง "//" และ "#" ดังนั้นไม่ควรมีความแตกต่างทางเทคนิค PHP ใช้ไวยากรณ์ C ดังนั้นฉันคิดว่านั่นเป็นสาเหตุที่โปรแกรมเมอร์ส่วนใหญ่ใช้ความคิดเห็นแบบ C '' // '


1
หรือใช้ไวยากรณ์ Perl ซึ่งในกรณีนี้ "#" ทำให้ปรากฏ และ Perl ได้รับความคิดเห็นจากไวยากรณ์เปลือกหอยยูนิกซ์
เจอราร์ดโอนีล

7
<?php
    echo 'This is a test'; // This is a one-line C++ style comment
    /* This is a multi-line comment.
       Yet another line of comment. */
    echo 'This is yet another test.';
    echo 'One Final Test'; # This is a one-line shell-style comment
?>

RTM


// เป็นความคิดเห็นสไตล์ C
Blue Water

6

มีเหตุผลใดนอกเหนือจากความชอบส่วนตัวที่จะใช้ // แทนที่จะเป็น # สำหรับความคิดเห็นหรือไม่

ฉันคิดว่ามันเป็นเพียงการตั้งค่าส่วนตัวเท่านั้น มีความแตกต่างระหว่างไม่เป็นและ// #ฉันใช้เป็นการส่วนตัว#สำหรับความคิดเห็นแบบบรรทัดเดียว//สำหรับการใส่ความคิดเห็นรหัสและ/** */สำหรับความคิดเห็นแบบบล็อก

<?php
    # This is a one-line comment
    echo 'This is a test';

    // echo 'This is yet another test'; // commenting code

    /** 
     * This is a block comment
     * with multi-lines 
     */
    echo 'One final test';
?>

ฉันชอบที่จะใช้//สำหรับการแสดงความคิดเห็นรหัสปกติเนื่องจากเป็นสิ่งที่คนส่วนใหญ่ใช้เมื่อแสดงความคิดเห็นรหัส และฉันใช้#สำหรับความคิดเห็นที่ตั้งใจจะอธิบายแทนที่จะเป็นรหัสที่ใส่ความคิดเห็นไว้ การหลีกเลี่ยงการ/**/ใช้ liners หนึ่งรายการจะช่วยลดความขัดแย้งในการเปิด / ปิดเมื่อคุณพยายามใช้/**/กับรหัสที่มี `/ ** / ภายในรหัสนั้น ... คุณจะจบลงด้วยการปิดก่อนกำหนด และนั่นก็ไม่ดี
ahnbizcad

5

อาจคิดว่า#รูปแบบการแสดงความคิดเห็นมีวัตถุประสงค์หลักเพื่อสร้างเชลล์สคริปต์โดยใช้สัญลักษณ์ "shebang" (#!) ที่คุ้นเคย ในสคริปต์ต่อไปนี้ PHP ควรละเว้นบรรทัดแรกเนื่องจากเป็นความคิดเห็นด้วย ตัวอย่าง:

#!/usr/bin/php
<?php

echo "Hello PHP\n";

หากคุณเก็บไว้ในไฟล์ที่ปฏิบัติการได้คุณสามารถเรียกใช้จากเทอร์มินัลเช่นนี้

./hello

ผลลัพธ์คือ

Hello PHP

อย่างไรก็ตามการใช้เหตุผลนี้ไม่ถูกต้องเนื่องจากตัวอย่างต่อไปนี้แสดง:

#!/usr/bin/php
#A
<?php

#B
echo "Hello PHP\n";

บรรทัดแรก (บรรทัด shebang) จะถูกละเว้นโดยล่ามเป็นพิเศษ บรรทัดความคิดเห็นก่อนแท็ก PHP ถูกสะท้อนไปยังเอาต์พุตมาตรฐานเนื่องจากไม่อยู่ในแท็ก PHP ความคิดเห็นหลังจากการเปิดแท็ก PHP ถูกตีความว่าเป็นโค้ด PHP แต่จะถูกละเว้นเพราะเป็นความคิดเห็น

ผลลัพธ์ของรุ่นที่แก้ไขคือ

#A
Hello PHP

13
จริงๆแล้ว Shebang นั้นอยู่นอกรหัส PHP ดังนั้นจึงไม่ใช่คำวิจารณ์สำหรับ PHPอย่างแน่นอน ลองลบ!และเรียกใช้ไฟล์ผ่านphpบรรทัดคำสั่ง: มันจะพิมพ์ "# / usr / bin / php" เหตุผลที่ shebang ถูกเพิกเฉยก็เพราะ PHP รู้จักเส้น shebang ที่จุดเริ่มต้นของไฟล์และไม่สนใจมัน
Ninj

ใช้ php7.4 ความคิดเห็นทั้งสองจะถูกสะท้อนออกมา ดังนั้นมัดจะไม่ถูกละเว้น (หรือไม่อีกต่อไป)
จ่าย

0

หากคุณสร้างกฎบางชุดในทีม / โครงการของคุณ ... สามารถแสดงความคิดเห็นได้ 2 ประเภทเพื่อแสดงวัตถุประสงค์ของรหัสที่แสดงความคิดเห็น

ตัวอย่างเช่นฉันชอบที่จะใช้#เพื่อปิด / ปิดการตั้งค่าการตั้งค่าฟังก์ชั่นย่อยและโดยทั่วไปชิ้นส่วนของรหัสที่มีประโยชน์หรือมีความสำคัญ แต่ปัจจุบันถูกปิดการใช้งาน


ฉันชอบที่จะทำในสิ่งที่ตรงกันข้าม ใช้หนึ่งสำหรับความคิดเห็นรหัสและอื่น ๆ สำหรับความคิดเห็นคำอธิบาย
ahnbizcad

@ahnbizcad มันจะดีกว่าที่จะใช้บล็อกความคิดเห็นสำหรับคำอธิบาย / ** * * /
d.raev

ทำไม. ---- / - / - / - / -
ahnbizcad

0

ไม่มี PSR อย่างเป็นทางการสำหรับสิ่งนั้น

อย่างไรก็ตามในโค้ดตัวอย่าง PSR ทั้งหมดนั้นใช้//สำหรับความคิดเห็นแบบอินไลน์

มีข้อเสนอการขยาย PSR-2 ที่มีเป้าหมายเพื่อสร้างมาตรฐาน แต่ไม่เป็นทางการ: https://github.com/php-fig-rectified/fig-rectified-standards/blob/master/PSR-2-R-coding- style-guide-additions.md # รหัสแสดงความคิดเห็น

//ใช้กันอย่างแพร่หลายในวัฒนธรรม PHP แต่ก็ใช้ได้#เช่นกัน ฉันชอบมันเป็นการส่วนตัวสำหรับการสั้นและประหยัดไบต์ มันเป็นรสนิยมส่วนตัวและลำเอียงไม่มีคำตอบที่ถูกต้องจนกว่ามันจะกลายเป็นมาตรฐานซึ่งเป็นสิ่งที่เราควรพยายามติดตามให้มากที่สุด


ปัญหาเกี่ยวกับมาตรฐานในขอบเขตของวิทยาศาสตร์คอมพิวเตอร์คือการสร้างมาตรฐานคุณต้องมีตัวเลือกที่ดีที่สุดและในวิทยาศาสตร์คอมพิวเตอร์ไม่มีสิ่งใดเป็นตัวเลือกที่ดีที่สุด มีเพียงตัวเลือกที่ไม่ถูกต้องและตัวเลือกที่ดีกว่า แต่ไม่มี "ตัวเลือกที่ดีที่สุด"
น้ำทะเลสีฟ้า

0

ใช่อย่างไรก็ตามมีความแตกต่างข้ามแพลตฟอร์ม

ฉันใช้ # ตลอดเวลาในการแสดงความคิดเห็นใน PHP แต่ฉันสังเกตเห็นความแตกต่างของการยอมรับ

บนแป้นพิมพ์ windows คีย์ # ใช้งานง่าย บนแป้นพิมพ์ mac # key ส่วนใหญ่ไม่มีอยู่

ดังนั้นสำหรับผู้ใช้ Mac [Alt] + [3] หรือ [⌥] + [3] นั้นยากที่จะพิมพ์มากกว่า // ดังนั้น // กลายเป็นวิธีการข้ามแพลตฟอร์มในการแสดงรหัสพร้อมความคิดเห็น

นี่คือการสังเกตของฉัน


0

จากhttps://php.net/manual/th/migration53.deprecated.php

"ฟีเจอร์ที่เลิกใช้แล้วใน PHP 5.3.x ... ความคิดเห็นที่ขึ้นต้นด้วย '#' ตอนนี้เลิกใช้แล้วในไฟล์. INI"

ที่นั่นคุณมีมัน แฮช '#' ดูเหมือนจะยังคงเป็นตัวเลือกความคิดเห็นโดยค่าเริ่มต้นโดยไม่เลิกใช้ ฉันวางแผนที่จะใช้มันเพื่อแยกแยะเลเยอร์ต่างๆของคำสั่งซ้อน / if และทำเครื่องหมายวงเล็บปิดหรือใช้เพื่อแยกแยะความคิดเห็นของโค้ดจากโค้ดที่ใส่เครื่องหมายคอมเม้นท์เนื่องจากมีคนอื่นแนะนำไว้ในโพสต์ที่เกี่ยวข้อง (หมายเหตุ: ลิงก์ใช้ได้ / ทำงานตั้งแต่วันที่ 4/23/19 แม้ว่าใครจะรู้ว่ามันจะยังใช้งานได้เมื่อคุณอ่านข้อความนี้)


0

มีเหตุผลใดนอกเหนือจากความชอบส่วนตัวที่จะใช้ // แทนที่จะเป็น # สำหรับความคิดเห็นหรือไม่

ฉันมาที่นี่เพื่อรับคำตอบด้วยตัวเองและมันดีที่จะรู้ว่าไม่มีความแตกต่างของรหัส

อย่างไรก็ตามผู้ที่ชอบการตั้งค่าสามารถให้เหตุผลได้ว่าคุณต้องการความคิดเห็นที่สอดคล้อง 'shell-> perl-> php' เทียบกับวิธี 'c-> php'

เนื่องจากฉันเข้าใกล้ php ในฐานะ webby ของคนจนฉันใช้ # .. จากนั้นฉันเห็นรหัสของคนอื่นและตรงไปที่ SO ;)


-8

ความคิดเห็นที่มี "#" ถูกคัดค้านด้วย PHP 5.3 ดังนั้นใช้ // หรือ / ... / เสมอ


21
พวกเขาจะเลิกในไฟล์ INIเท่านั้น
DisgruntledGoat

@DisgruntledGoat การอ้างอิงใด ๆ กับเอกสารทางการ?
เหี่ยวแห้ง

1
ส่งตรงจาก php.net: ความคิดเห็นที่ขึ้นต้นด้วย '#' จะถูกคัดค้านในไฟล์. INI
เหี่ยวแห้ง

4
อังเดรอาจถึงเวลาที่จะลบคำตอบนี้
Jose Manuel Abarca Rodríguez

1
วิจัยน้อยลง! ทำให้คุณสูญเสีย :) แต่สิ่งนี้ยังช่วยให้ฉันรู้ว่า # เลิกใช้แล้วในไฟล์ INI
Abdul Manan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.