2012-02-01 3 views
122

Non ho mai visto un file PHP utilizzando gli hash (#) per i commenti. Ma oggi ho capito che in realtà posso! Suppongo che ci sia una ragione per cui tutti usano invece //, quindi eccomi qui.Posso usare il cancelletto (#) per commentare in PHP?

C'è qualche motivo, oltre alle preferenze personali, per utilizzare // anziché # per i commenti?

+13

Questo è un hash (o cancelletto, o quadrato, a seconda del paese in cui ci si trova), non un tag hash. Un hashtag è un mezzo per categorizzare i contenuti su Twitter. – Quentin

+0

È possibile utilizzare l'equivalente di escape HTML se è necessario il simbolo # nel codice – dotoree

+15

Ho pensato che il simbolo "#" fosse chiamato tag hash ... :(Non ho motivo di rifiutare così pesantemente Lezione appresa – Hubro

risposta

139

La risposta alla domanda C'è una differenza tra tra "#" e "//" per i commenti a riga singola in PHP? è no.

Non c'è differenza. Osservando la parte di parsing del codice sorgente PHP, both "#" and "//" are handled by the same code, e quindi lo stesso comportamento.

+2

Si noti che N ++ (6.55) non è sempre in grado di piegare correttamente i commenti '#. Ho notato che nei file PHP di grandi dimensioni: 2k o più righe. #. – CoR

+0

Preferisco di gran lunga i commenti '#' a '//' quelli .. ma mi sono sempre chiesto se '#' è compatibile PSR .. È? – Stphane

+4

Hash è utile quando si descrivono i percorsi, ad esempio '#/notizie (codice qui) 'invece di' ///news (codice qui) '. Per quanto riguarda File LoC 2k, penso che ci siano altri problemi oltre al tag di commento da usare :) –

6
<?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

8

documentazione del PHP descrive le diverse possibilità di commenti. Vedi http://www.php.net/manual/en/language.basic-syntax.comments.php

Ma non dice nulla sulle differenze tra "//" e "#". Quindi non ci dovrebbe essere una differenza tecnica. PHP usa la sintassi C, quindi penso che sia la ragione per cui la maggior parte dei programmatori utilizza i commenti in stile C "//".

-6

I commenti con "#" sono obsoleti con PHP 5.3. utilizzare in modo sempre // o/.../

+19

Sono deprecati solo ** in file INI **. – DisgruntledGoat

+0

@DisgruntledGoat Qualche riferimento alla documentazione ufficiale? – Wilt

+1

[Direttamente da php.net:](http://php.net/manual/en/migration53.deprecated.php) * I commenti che iniziano con '#' sono ora deprecati nei file .INI. * – Wilt

3

Si potrebbe pensare che la# forma di commento è principalmente destinato a fare uno script di shell utilizzando la "baracca" familiare (#!) la notazione. Nel seguente script, PHP dovrebbe ignorare la prima riga perché è anche un commento. Esempio:

#!/usr/bin/php 
<?php 

echo "Hello PHP\n"; 

Se si memorizza in un file eseguibile si può quindi eseguire da un terminale come questo

./hello 

L'uscita è

Hello PHP 

Tuttavia, questo ragionamento non è corretto, come mostra il seguente esempio:

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

#B 
echo "Hello PHP\n"; 

La prima riga (la linea di shebang) viene appositamente ignorata dall'interprete. La riga di commento prima del tag PHP viene riportata all'output standard perché non si trova all'interno di un tag PHP. Il commento dopo l'apertura del tag PHP viene interpretato come codice PHP ma viene ignorato perché è un commento.

L'uscita della versione riveduta è

#A 
Hello PHP 
+11

In realtà, lo shebang è ** al di fuori ** del codice PHP, quindi è assolutamente ** non un commento per PHP **. Prova a rimuovere '!', Ed esegui il file attraverso la riga di comando 'php': stamperà" #/usr/bin/php ". Il motivo per cui lo shebang viene ignorato è perché PHP riconosce le linee dello shebang all'inizio dei file e li ignora. – Ninj

5

v'è alcuna ragione, a parte le preferenze personali, da utilizzare // invece di # per i commenti?

Penso che sia solo una preferenza personale. Non c'è differenza tra // e #. Io personalmente uso # per un commento su una riga, // per commentare il codice e /** */ per il commento del blocco.

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

Mi piace usare '//' per commenti di codice regolari, poiché è quello che la maggior parte delle persone usa quando commenta il codice. E io uso '#' per i commenti che sono destinati a descrivere, piuttosto che il codice che è commentato. Evitare '/ ** /' per un liner riduce i conflitti di apertura/chiusura quando si tenta di usare '/ ** /' sul codice che ha '/ **/all'interno di quel codice ... si finisce con una chiusura prematura. e questo è male. – ahnbizcad

0

Se si stabilisce alcuni set di regole nel vostro team/progetto ... i 2 tipi di commenti può essere utilizzato per illustrare scopo del codice commentato.

Ad esempio, mi piace utilizzare # per disattivare/disattivare le impostazioni di configurazione, le sottofunzioni e in generale un pezzo di codice che è utile o importante, ma è attualmente disabilitato.

+0

Mi piace fare il contrario, ma essenzialmente la stessa cosa nello spirito. usarne uno per i commenti al codice e l'altro per i commenti alla descrizione. – ahnbizcad

+0

@ahnbizcad è meglio usare i blocchi di commento per la descrizione/** * */ –

+0

perché. ----/-/-/-/- – ahnbizcad