task: mark implementation classes as @internal across all submodules
Summary
Add @internal PHPDoc tag to implementation classes that define their own constructor across domain and all submodules. Mark all hook classes as final. Add @final to DomainNegotiationContext. Add @phpstan-ignore comments to legacy hook stubs and submodule classes that reference internal classes.
Classes without their own constructor are NOT marked @internal since their constructor signature is inherited and not ours to break.
What changed
- 55 classes marked
@internal(services, event subscribers, path processors, access checkers, and other classes with custom constructors) - 16 hook classes marked
final(hook classes are implementation details, never meant to be extended) - 1 class marked
@final(DomainNegotiationContext- injectable but not extendable) - 58
@phpstan-ignorecomments added to.module/.installfiles for legacy hook stubs calling internal classes - 2
@phpstan-ignore-next-lineon submodule classes extending internal parents (DomainConfigUILanguageManager,DomainSourceElementManager) domain_config_test.install: replaced@phpstan-ignore-next-linewith@varinterface type hints
Public API (NOT marked @internal)
- All
*Interfacefiles DomainNegotiationContext(@final)- Base classes extended by submodules:
DomainBlockBase,DomainControllerBase,DomainCommands,DomainAccessControlHandler,DomainElementManager,DomainConfigLanguageManager - Extensible Views access plugins:
DomainAccessContent,DomainAccessEditor,DomainContentAccess,DomainEditorAccess - Action base classes:
DomainAccessActionBase,DomainSourceActionBase DomainSourceElementManager,DomainConfigMigration- All exception classes, traits, event constants/objects
- All classes without a custom constructor (entities, forms, controllers, plugins, constraints, etc.)
Verification
- PHPStan: 0 errors (full analysis)
- PHPStan on external modules (domain_extras, domain_redirect, domain_shorturl, domain_path): 0
@internal-related regressions - PHPCS: 0 errors
Edited by Frank Mably