diff --git a/src/Standards/PSR2/Sniffs/Namespaces/NamespaceDeclarationSniff.php b/src/Standards/PSR2/Sniffs/Namespaces/NamespaceDeclarationSniff.php index 7b1dad199f..3d910ea321 100644 --- a/src/Standards/PSR2/Sniffs/Namespaces/NamespaceDeclarationSniff.php +++ b/src/Standards/PSR2/Sniffs/Namespaces/NamespaceDeclarationSniff.php @@ -50,6 +50,11 @@ public function process(File $phpcsFile, $stackPtr) $end = $phpcsFile->findEndOfStatement($stackPtr); for ($i = ($end + 1); $i < ($phpcsFile->numTokens - 1); $i++) { + if ($tokens[$i]['code'] === T_CLOSE_TAG) { + // Don't enforce new line if the next thing after the statement is a PHP close tag. + return; + } + if ($tokens[$i]['line'] === $tokens[$end]['line']) { continue; } diff --git a/src/Standards/PSR2/Tests/Namespaces/NamespaceDeclarationUnitTest.inc b/src/Standards/PSR2/Tests/Namespaces/NamespaceDeclarationUnitTest.inc index 703393396f..3d09d432c3 100644 --- a/src/Standards/PSR2/Tests/Namespaces/NamespaceDeclarationUnitTest.inc +++ b/src/Standards/PSR2/Tests/Namespaces/NamespaceDeclarationUnitTest.inc @@ -24,3 +24,10 @@ namespace Vendor\Package; $call = namespace\function_name(); echo namespace\CONSTANT_NAME; // Something which is not a blank line. + +// When the next thing after a namespace declaration is a PHP close tag, don't enforce a new line as it may impact HTML display. +namespace Vendor\NoBlankLine\EndsOnCloseTag ?> + + + + + +