Drop brightnucleus/config for direct registration#45
Merged
Conversation
The config package only loaded a PHP array and handed its values back as mixed, which capped static analysis at level 8 and modelled a pattern the production plugins this repo points to do not use. The Plugin now registers its example page, setting and field straight against the WordPress API, fully typed, leaving composer/installers as the only runtime dependency.
With the mixed-returning config accessors gone, the source analyses clean at max with no baseline.
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.
The boilerplate carried
brightnucleus/configto do one small thing: loadconfig/defaults.phpand hand its nested values back throughgetConfigKey(). None of the library's real value — schema validation, required keys — was used, and every accessor returnedmixed, which is what pinned static analysis at level 8. It also modelled a configuration-driven pattern that the production plugins this repo points people to, Co-Authors Plus, MSM Sitemap, Liveblog among them, simply do not use.So the example settings page, setting, section and field are now registered directly against the WordPress API, with typed methods and constants in the
Pluginclass. The plugin file passes its own path in rather than defining global constants, and the class derives its directory and URL from it. With the untyped boundary gone, PHPStan moves up to its maximum level with no baseline, andcomposer/installersis left as the only runtime dependency.The test suite is rebuilt around the new surface — exact arguments to each registration call, the captured render callbacks invoked against fixtures, the sanitiser, and the asset enqueuing — holding mutation coverage at 100%.