PHP_CodeSniffer icon indicating copy to clipboard operation
PHP_CodeSniffer copied to clipboard

Generic/CharacterBeforePHPOpeningTag: prevent false positive in mixed PHP/HTML files

Open jrfnl opened this issue 3 years ago • 1 comments

When a file would contain a short open echo tag <?= before a full PHP tag <?php, the sniff would throw a "The opening PHP tag must be the first content in the file" error, which IMO is a false positive.

Fixed now.

Includes additional tests demonstrating the issue and safeguarding the fix.

jrfnl avatar Nov 02 '22 20:11 jrfnl

I don't agree this is a false positive, and I think the proposed change is actually a bit confusing for this specific sniff.

If the short echo represents the start of PHP code, then test file 4 is an error due to the HTML before it. If it doesn't, then test file 5 is an error as the PHP tag isn't the first thing in the file.

What you're proposing is probably a logical rule for projects, but it's not what this sniff was contributed to do. It exists to ensure accidental output of HTML before PHP begins, like when a blank line is added before the opening tag accidentally and you get the error about output already having started. Maybe another sniff that enforces specific rules for mixed HTML/PHP files is required.

gsherwood avatar Dec 18 '22 22:12 gsherwood