Tôi có thể sử dụng dấu băm (#) để bình luận trong PHP không?


144

Tôi chưa bao giờ thấy một tệp PHP sử dụng băm ( #) để bình luận. Nhưng hôm nay tôi nhận ra rằng tôi thực sự có thể! Tôi cho rằng có một lý do tại sao mọi người sử dụng //thay thế, vì vậy tôi ở đây.

Có bất kỳ lý do, ngoài sở thích cá nhân, để sử dụng //hơn là #cho ý kiến?


16
Đó là một hàm băm (hoặc bảng Anh, hoặc hình vuông, tùy thuộc vào quốc gia bạn đang ở), không phải là thẻ băm. Hashtag là một phương tiện phân loại nội dung trên Twitter.
Quentin

Bạn có thể sử dụng lối thoát HTML tương đương & # 35; nếu bạn cần biểu tượng # trong mã của mình
dotoree

22
Tôi nghĩ #biểu tượng được gọi là thẻ băm ... :( Không có lý do gì để bỏ phiếu quá nhiều. Bài học rút ra
Hubro

3
Tôi thích sử dụng #cho các nhận xét dòng đơn, //để nhận xét mã & /* ... */cho các khối nhận xét
John Magnolia

Bản sao có thể có của Nhận xét PHP # vs //
nawfal

Câu trả lời:


163

Câu trả lời cho câu hỏi sự khác biệt nào giữa việc sử dụng "#" và "//" cho các nhận xét một dòng trong PHP không? không có .

Không có sự khác biệt. Bằng cách xem phần phân tích cú pháp của mã nguồn PHP, cả "#" và "//" đều được xử lý bởi cùng một mã và do đó có cùng một hành vi.


3
Lưu ý rằng N ++ (6.55) không thể luôn luôn #bình luận chính xác. Tôi nhận thấy rằng trong các tệp PHP lớn: 2k dòng trở lên. Đôi khi nó bắt đầu gấp mã trên nhiều #.
CoR

1
Tôi rất thích #những bình luận hơn //những bình luận .. nhưng tôi luôn tự hỏi liệu #PSR có tuân thủ không .. Có phải vậy không?
Stphane

5
Hash là hữu ích khi mô tả các tuyến đường, ví dụ. # /news (code here)thay vì // /news (code here). Đối với các tệp LoC 2k, tôi nghĩ có những vấn đề khác ngoài việc sử dụng thẻ nhận xét :)
Juha Untinen

11

Tài liệu của PHP mô tả các khả năng khác nhau của các bình luận. Xem http://www.php.net/manual/en/lingu.basic-syntax.comments.php

Nhưng nó không nói gì về sự khác biệt giữa "//" và "#". Vì vậy, không nên có một sự khác biệt kỹ thuật. PHP sử dụng cú pháp C, vì vậy tôi nghĩ đó là lý do tại sao hầu hết các lập trình viên đang sử dụng các nhận xét kiểu C '//'.


1
Hoặc nó sử dụng cú pháp perl, trong trường hợp "#" xuất hiện. Và perl nhận được cú pháp nhận xét của nó từ các vỏ unix-eye.
Gerard ONeill

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


// là một nhận xét theo phong cách C
Blue Water

6

Có bất kỳ lý do, ngoài sở thích cá nhân, để sử dụng // thay vì # cho ý kiến?

Tôi nghĩ rằng đó chỉ là một sở thích cá nhân mà thôi. Không có sự khác biệt giữa //#. Cá nhân tôi sử dụng #cho nhận xét một dòng, //để nhận xét mã và /** */cho nhận xét khối.

<?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';
?>

Tôi thích sử dụng //cho các nhận xét mã thông thường, vì đó là những gì hầu hết mọi người sử dụng khi bình luận ra mã. Và tôi sử dụng #cho các bình luận có ý định mô tả, thay vì mã được nhận xét. Việc tránh /**/một lớp lót sẽ làm giảm xung đột mở / đóng khi bạn cố sử dụng /**/mã có `/ ** / trong mã đó ... bạn kết thúc bằng việc đóng sớm. và đó là xấu.
ahnbizcad

5

Mọi người có thể nghĩ rằng #hình thức bình luận chủ yếu nhằm tạo ra một kịch bản shell bằng cách sử dụng ký hiệu "shebang" (#!) Quen thuộc. Trong đoạn script sau, PHP nên bỏ qua dòng đầu tiên vì nó cũng là một nhận xét. Thí dụ:

#!/usr/bin/php
<?php

echo "Hello PHP\n";

Nếu bạn lưu trữ nó trong một tập tin thực thi, bạn có thể chạy nó từ một thiết bị đầu cuối như thế này

./hello

Đầu ra là

Hello PHP

Tuy nhiên , lý do này là không chính xác, như ví dụ sau đây cho thấy:

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

#B
echo "Hello PHP\n";

Dòng đầu tiên (dòng shebang) được thông dịch viên đặc biệt bỏ qua. Dòng nhận xét trước thẻ PHP được lặp lại thành đầu ra tiêu chuẩn vì nó không nằm trong thẻ PHP. Nhận xét sau khi mở thẻ PHP được hiểu là mã PHP nhưng nó bị bỏ qua vì nó là một nhận xét.

Đầu ra của phiên bản sửa đổi là

#A
Hello PHP

13
Trên thực tế, shebang nằm ngoài mã PHP, vì vậy nó hoàn toàn không phải là một nhận xét cho PHP . Hãy thử xóa !và chạy tệp thông qua phpdòng lệnh: nó sẽ in "# / usr / bin / php". Lý do tại sao shebang bị bỏ qua là do PHP nhận ra các dòng shebang ngay khi bắt đầu các tệp và bỏ qua chúng.
Ninj

Sử dụng php7.4, cả hai bình luận đều được lặp lại. Vì vậy, sheband hoàn toàn không (hoặc không còn) bị bỏ qua.
Chargenn

0

Nếu bạn thiết lập một số bộ quy tắc trong nhóm / dự án của mình ... 2 loại bình luận có thể được sử dụng để phác thảo mục đích của mã nhận xét.

Ví dụ: tôi thích sử dụng #để tắt tiếng / tắt cài đặt cấu hình, chức năng phụ và nói chung là một đoạn mã hữu ích hoặc quan trọng, nhưng hiện tại đã bị vô hiệu hóa.


Tôi thích làm điều ngược lại, nhưng về cơ bản là điều tương tự về tinh thần. sử dụng một cho ý kiến ​​mã, và cái kia cho ý kiến ​​mô tả.
ahnbizcad

@ahnbizcad tốt hơn là sử dụng các khối nhận xét để mô tả / ** * * /
d.raev

tại sao. ---- / - / - / - / -
ahnbizcad

0

Không có PSR chính thức cho điều đó.

Tuy nhiên, trong tất cả các mã ví dụ PSR, họ sử dụng //cho các nhận xét nội tuyến.

Có một đề xuất mở rộng PSR-2 nhằm chuẩn hóa nó, nhưng nó không chính thức: https://github.com/php-fig-rectified/fig-rectified-stiterias/blob/master/PSR-2-R-coding- style-guide-additions.md # bình luận-mã

//được sử dụng phổ biến hơn trong văn hóa PHP, nhưng cũng tốt để sử dụng #. Cá nhân tôi thích nó, vì ngắn hơn và tiết kiệm byte. Đó là sở thích cá nhân và thiên vị, không có câu trả lời đúng cho nó, cho đến khi, tất nhiên, nó trở thành một tiêu chuẩn, đó là điều chúng ta nên cố gắng làm theo càng nhiều càng tốt.


Vấn đề với các tiêu chuẩn trong lĩnh vực Khoa học Máy tính là để tạo ra một tiêu chuẩn, bạn phải có lựa chọn tốt nhất và trong Khoa học Máy tính không có thứ nào là lựa chọn tốt nhất. Chỉ có lựa chọn sai, và lựa chọn tốt hơn. Nhưng "lựa chọn tốt nhất" không tồn tại.
Blue Water

0

Có, tuy nhiên có sự khác biệt đa nền tảng.

Tôi sử dụng # tất cả thời gian để bình luận trong PHP, nhưng tôi đã nhận thấy một sự khác biệt chấp nhận.

Trên bàn phím windows, phím # rất dễ sử dụng. Trên bàn phím mac # phím hầu như không có.

Vì vậy, đối với người dùng mac, [Alt] + [3] hoặc [⌥] + [3] khó nhập hơn //, vì vậy // đã trở thành một cách hiển thị mã đa nền tảng với các bình luận.

Đây là quan sát của tôi.


0

Từ https://php.net/manual/en/migration53.deprecated.php

"Các tính năng không dùng nữa trong PHP 5.3.x ... Nhận xét bắt đầu bằng '#' hiện không được chấp nhận trong các tệp .INI."

Có bạn có nó. Hash '#' dường như vẫn là một tùy chọn nhận xét theo mặc định do không bị phản đối. Tôi dự định sử dụng nó để phân biệt các lớp khác nhau của các câu lệnh if / other lồng nhau và đánh dấu dấu ngoặc đóng của chúng hoặc sử dụng để phân biệt các nhận xét mã với mã nhận xét như những người khác đã đề xuất trong các bài đăng liên quan. (Lưu ý: Liên kết hợp lệ / hoạt động kể từ ngày 23/2/19, mặc dù ai biết liệu nó có còn hoạt động khi bạn đọc nó không.)


0

Có bất kỳ lý do, ngoài sở thích cá nhân, để sử dụng // thay vì # cho ý kiến?

Tôi đến đây để tự trả lời, và thật tốt khi biết KHÔNG có sự khác biệt về mã.

Tuy nhiên, người khôn ngoan theo sở thích có thể lập luận rằng bạn thích tính nhất quán của nhận xét 'shell-> perl-> php' so với cách 'c-> php'.

Vì tôi đã tiếp cận php với tư cách là một webby của một người nghèo, tôi đã sử dụng # .. và sau đó tôi thấy mã của người khác và đến thẳng SO. ;)


-8

Nhận xét với "#" không được chấp nhận với PHP 5.3. Vì vậy, luôn luôn sử dụng // hoặc / ... /


21
Chúng chỉ bị phản đối trong các tệp INI .
DisgruntledGoat

@DisgruntledGoat Bất kỳ tài liệu tham khảo chính thức?
Héo

1
Trực tiếp từ php.net: Nhận xét bắt đầu bằng '#' hiện không được chấp nhận trong các tệp .INI.
Héo

4
Andre, có lẽ đã đến lúc xóa câu trả lời này.
Jose Manuel Abarca Rodríguez

1
ít nghiên cứu! làm bạn mất :) nhưng điều này cũng giúp tôi biết rằng # bị phản đối trong các tệp INI
Abdul Manan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.