Idea: disallow protected members in final classes
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 42/100
Research direction
Review the originating Slevomat issue and the PHPStan strict-rules project to locate the existing rule entry point and related tests. Implement the check for new protected members in final classes while allowing inherited protected methods that are overridden, then verify the reported examples and corresponding rule tests.
Written by the indexing model from the issue text.
Description
Originally reported as https://github.com/slevomat/coding-standard/issues/563 but impossible to implement there.
The idea is to ensure that final classes don't contain any new protected members. Such members can be made private because there are no descendants that can use them. Special care has to be taken to avoid changing protected methods from parent classes to private, such as in this example:
abstract class MyAbstractClass
{
protected function protectedFunction()
{
echo 'foo';
}
}
final class MyClass extends MyAbstractClass
{
protected function protectedFunction()
{
echo 'bar';
}
}
In this case, protectedFunction may not cause an error because its visibility can't be changed to private.
- Dominant language
- PHP
- Stars
- 711
- Forks
- 62
- Avg merge
- 35m
- Merged PRs (30d)
- 4
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from phpstan/phpstan-strict-rules
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
phpstan/phpstan-strict-rules#317 · 1 comment ·
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
phpstan/phpstan-strict-rules#316 · 3 comments ·
-
Difficulty 3/5 1-2 days Newbie friendliness 52/100
phpstan/phpstan-strict-rules#298 · 2 comments · 1 reaction ·
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
phpstan/phpstan-strict-rules#289 · 1 comment ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 35/100
phpstan/phpstan-strict-rules#283 · 6 comments ·
All issues in phpstan/phpstan-strict-rules
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
filamentphp/filament#20630 ·
Maintainers usually reply within 1 day
-
Issue: Bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
OpenAPITools/openapi-generator#25107 ·
Maintainers usually reply within 1 day
-
needs-maintainer-review review:approve
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Ultimate-Multisite/ultimate-ai-connector-compatible-endpoints#163 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day