2009-09-20 14 views
6

C'è un validatore PHP come se esistesse un validatore HTML su w3.org?Esiste un validatore PHP?

+6

Per convalidare che cosa? Sintassi di PHP? Si otterrà un errore di analisi se la sintassi non è valida. – Gumbo

+0

Penso che sia alla ricerca di qualcosa come "lint per PHP". Questa domanda è stata posta qui in precedenza: vedi http://stackoverflow.com/questions/378959/is-there-a-static-code-analyzer-like-lint-for-php-files in particolare, PHPlint (http://www.icosaedro.it/phplint/) sembra promettente. – bart

risposta

2

Motore PHP stesso.

Per attivare i messaggi di errore:

error_reporting(E_ALL); 
9

È possibile eseguire PHP con il flag -l o --syntax-check. Esso controlla la sintassi del file fornito senza effettivamente eseguirlo

php --syntax-check myfile.php 
16

È possibile convalidare la sintassi senza eseguire uno script PHP per sé, utilizzando php dalla riga di comando, con l'opzione "-l":

$ php --help 
Usage: php [options] [-f] <file> [--] [args...] 
     php [options] -r <code> [--] [args...] 
     php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...] 
     php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...] 
     php [options] -- [args...] 
     php [options] -a 
    ... 
    -l    Syntax check only (lint) 
    ... 

Ad esempio, con un file che contiene:

<?php 

, 


die; 

?> 

(Si noti l'evidente errore)

Otterrete:

$ php -l temp.php 
PHP Parse error: syntax error, unexpected ',' in temp.php on line 3 

Parse error: syntax error, unexpected ',' in temp.php on line 3 
Errors parsing temp.php 


L'integrazione di questo in un processo di generazione, o come pre-commit hook SVN, è bello, btw: si aiuta a evitare errori di sintassi che hanno nella produzione ^^

2

Basandosi su ciò che altri hanno detto:

error_reporting(E_ALL); 

Usare semplicemente i messaggi di errore di PHP è abbastanza buono. Tuttavia, se vuoi davvero ottenere l'anale e utilizzare un set "standard" puoi optare per uno PHP Code Sniffer, che ad esempio puoi implementare come hook pre-commit al tuo sistema di controllo della versione.

Ecco una domanda SO che spiega la loro utilità: How useful is PHP CodeSniffer? Code Standards Enforcement in General?