Mark controllers as "final"#1587
Merged
Merged
Conversation
josephsnyder
approved these changes
Jul 24, 2023
github-merge-queue Bot
pushed a commit
that referenced
this pull request
Aug 10, 2023
The `FilterController` class was created before #1587 was merged, and is thus missing the `final` designation. `AbstractBuildController ` was missed amidst some logical conflicts when previous PRs were merged and has been designated as `abstract`. In the future, it might be interesting to create a PHPStan plugin which ensures that all future controllers follow our naming and designation conventions.
github-merge-queue Bot
pushed a commit
that referenced
this pull request
Aug 31, 2023
CDash has a controller naming and designation convention, as discussed in #1587. Since then, I have forgotten to mark several new controllers as "final". I have added a test to enforce these rules automatically, rather than relying upon human reviewers to catch it. As seen in the diff for this PR, this test is quite effective. It caught the fact that the controllers in the Auth directory were not marked with the "final" keyword.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Our controller inheritance hierarchy currently has two types of controllers: "abstract" controllers which provide useful helper functions, and "business" controllers which contain functions which are called by Laravel's routing system. We should never inherit from a "business" controller, since there should never be a need to inherit the business logic contained within. At the same time, an easy mistake to make is to inherit from
BuildControllerrather thanAbstractBuildControllerfor example. To help enforce this, we can mark each "business" controller with thefinalkeyword and use PHPStan to ensure that no controllers inherit from a "business" controller.