Extra: Encourage the best practice of only declaring one class/interface/trait per file #1111
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PHPCS 3.1.0 will introduce a new
Generic.Files.OneObjectStructurePerFile
sniff will which check for all three in one go, but cannot be used yet. See: squizlabs/PHP_CodeSniffer#1627 and squizlabs/PHP_CodeSniffer#1630The current sniffs in this proposal will not catch one file containing a class + an interface + a trait, but will catch any file containing two or more of the same type of object structure.
I've chosen to downgrade the message to a warning and to soften the error message a little.
Once these sniffs have been in for a while and we have not received negative feedback about them, we could chose to defer to the upstream sniffs and let them
error
with a sterner message.