berry/extension-method-stub-generator
Composer plugin that scans dependencies for berry-method-extensions.json and generates PHP stub files for Berry “extension methods”. Improves IDE autocomplete and supports static analysis (e.g., PHPStan) by exposing fluent methods via generated stubs.
Installation:
Add the package as a Composer plugin in your project's composer.json:
{
"require": {
"berry/extension-method-stub-generator": "^1.0"
},
"extra": {
"berry": {
"extension-method-stub-generator": {
"output_dir": "stubs"
}
}
}
}
Run composer require berry/extension-method-stub-generator --dev.
First Use Case:
berry/htmx) includes a berry-method-extensions.json file.composer berry:generate-stubs to generate stubs in the configured output_dir (default: stubs).vendor/ide-helper/) or configure your IDE to use the stubs folder.Dependency Scanning:
berry-method-extensions.json. Manually trigger generation via:
composer berry:generate-stubs
post-install-cmd or post-update-cmd in composer.json:
"scripts": {
"post-install-cmd": [
"@berry:generate-stubs"
],
"post-update-cmd": [
"@berry:generate-stubs"
]
}
Stub Usage:
stubs/ to "Language Level and Dialect" → "Stub files".php-ide extension and point to the stubs directory.vendor/ide-helper/ for tools like PHPStan to recognize extension methods.Customization:
output_dir in composer.json:
"extra": {
"berry": {
"extension-method-stub-generator": {
"output_dir": "custom-stubs"
}
}
}
berry-method-extensions.json in your project (merged with dependencies).Missing Config File:
berry-method-extensions.json, the plugin silently skips it. Verify dependencies manually:
composer show --installed | grep berry
Stub Overwriting:
stubs/ directory.IDE Cache Issues:
File → Invalidate Caches.Ctrl+Shift+P → "Reload Window").-v to debug:
composer berry:generate-stubs -v
composer berry:generate-stubs --package=berry/htmx
Custom Templates:
StubGenerator class in a custom plugin.Post-Processing:
post-autoload-dump script to regenerate stubs after Composer updates:
"scripts": {
"post-autoload-dump": [
"@berry:generate-stubs"
]
}
CI/CD Integration:
- run: composer berry:generate-stubs
phpstan/extension-installer:
Use both packages to auto-load stubs for PHPStan:
composer require --dev phpstan/extension-installer
Configure phpstan.neon:
includes:
- vendor/berry-extension-method-stub-generator/stubs
How can I help you explore Laravel packages today?