Builder balíka
Rozšírte PackageServiceProvider a v configurePackage() opíšte, čo váš balík obsahuje. Všetko, čo patrí len do konzoly, sa zapojí za vás:
use RoundlyConsulting\PackageToolkit\Package;
use RoundlyConsulting\PackageToolkit\PackageServiceProvider;
final class CommentsServiceProvider extends PackageServiceProvider
{
public function configurePackage(Package $package): void
{
$package
->name('comments')
->hasConfigFile()
->hasMigrations()
->hasTranslations()
->hasCommands([PruneCommentsCommand::class])
->contributesToAbout();
}
}Kde je koreň balíka
Základný provider odvodí koreň balíka z umiestnenia samotného providera: src/…ServiceProvider.php → koreň balíka, teda adresár s config/, database/, resources/ a routes/. Všetky cesty buildera sa riešia relatívne k nemu:
comments-for-laravel/
config/comments.php hasConfigFile()
database/migrations/*.php hasMigrations()
database/migrations/<name>.php.stub hasMigration('<name>')
resources/lang/ hasTranslations()
resources/views/ hasViews()
routes/<file> hasRoutes('<file>')
src/CommentsServiceProvider.php the provider — the package root is the directory above src/Pri neštandardnej štruktúre — napríklad keď je provider vnorený hlbšie než v src/ — prepíšte resolvePackageBasePath():
// src/Providers/CommentsServiceProvider.php — one level deeper than usual
protected function resolvePackageBasePath(): string
{
return dirname(__DIR__, 2);
}Čo robí základný provider
- register() — vytvorí Package s odvodenou základnou cestou, zavolá configurePackage(), zlúči všetky deklarované konfiguračné súbory a zaregistruje deklarované aliasy tried (nerozpoznaná hodnota aliasu vyhodí výnimku).
- boot() — načíta preklady a views, načíta súbory rout (ak sa ich konfiguračný prepínač nečíta ako false; nerozpoznaná hodnota prepínača vyhodí výnimku) a pridá príspevky do about.
- boot(), len v konzole — zaregistruje všetky publish skupiny (konfigurácia, migrácie, preklady, views, routy, stuby) a konzolové príkazy.
Každý krok je protected metóda — registerPackageConfig(), registerFacadeAliases(), bootPackage(), registerAboutContributions(), bootPackageInConsole() a publishPackageMigrations() — takže balík s nezvyčajnou potrebou prepíše práve jeden krok, nie celý provider.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.