Metódy buildera
Každá metóda vracia builder, takže deklarácie sa reťazia. Ako prvú volajte name() — určuje konfiguračné kľúče, menné priestory views a prekladov aj všetky publish tagy:
| Metóda | Čo robí |
|---|---|
name(string $name) | Identifikátor balíka. Určuje konfiguračné kľúče, menné priestory views a prekladov aj publish tagy. |
hasConfigFile(?string $file = null) | Zlúči a publikuje konfiguračný súbor. Predvolene <name>.php (kľúč <name>, tag <name>-config). |
hasMigrations() | Publikuje každý súbor database/migrations/*.php pod <name>-migrations s vloženou časovou pečiatkou a v poradí adresára. Nič sa nenačítava automaticky. |
hasMigration(string $name) | Publikuje jeden súbor database/migrations/<name>.php.stub pod <name>-migrations s vloženou pečiatkou. Len pre zdroje .php.stub. |
hasTranslations() | Načíta a publikuje preklady (do lang/vendor/<name>, tag <name>-translations). |
hasViews(?string $namespace = null) | Zaregistruje a publikuje Blade views (menný priestor predvolene <name>, tag <name>-views). |
hasRoutes(string $file, ?string $enabledVia = null) | Načíta súbor rout (voliteľne za boolovským konfiguračným kľúčom, ktorý sa číta ako Config::boolean()) a publikuje ho pod <name>-routes. Nerozpoznaná hodnota prepínača vyhodí výnimku pri boote. |
hasCommands(array $commands) | Zaregistruje konzolové príkazy (len v konzole). Opakované volania sa sčítajú. |
hasFacadeAlias(string $class, ?string $configKey = null) | Zaregistruje alias triedy; o jeho názve alebo vynechaní rozhoduje konfigurácia a nerozpoznaná hodnota vyhodí výnimku. |
contributesToAbout(?Closure $data = null) | Pridá sekciu do php artisan about. |
publishesStubs(string $from, string $to, string $tag) | Publikuje ľubovoľnú sadu súborov pod vlastným tagom. |
Úplná deklarácia
Balík, ktorý využíva všetky metódy buildera:
use Illuminate\Support\Str;
use RoundlyConsulting\PackageToolkit\Package;
public function configurePackage(Package $package): void
{
$package
->name('comments')
->hasConfigFile() // config/comments.php
->hasMigrations() // database/migrations/*.php
->hasMigration('create_comment_reactions_table') // database/migrations/<name>.php.stub
->hasTranslations() // resources/lang → comments::
->hasViews() // resources/views → comments::
->hasRoutes('comments.php', 'comments.routes.enabled') // routes/comments.php, gated by config
->hasCommands([PruneCommentsCommand::class]) // console only
->hasFacadeAlias(Comments::class, 'comments.alias') // alias decided by config
->contributesToAbout(static fn (): array => [
'Package' => 'comments',
'Key type' => (string) config('comments.key_type'),
'API key' => Str::mask((string) config('comments.api_key'), '*', 7),
])
->publishesStubs(
$package->basePath.'/stubs',
base_path('stubs/comments'),
'comments-stubs',
);
}Publish tagy
Každá deklarácia zaregistruje publish skupinu pod tagom odvodeným od názvu balíka, takže hostiteľská aplikácia publikuje presne to, čo potrebuje:
| Tag | Deklaruje | Publikuje sa do |
|---|---|---|
<name>-config | hasConfigFile() | config/<file>.php |
<name>-migrations | hasMigrations(), hasMigration() | database/migrations/<Y_m_d_His>_<migration>.php |
<name>-translations | hasTranslations() | lang/vendor/<name> |
<name>-views | hasViews() | resources/views/vendor/<namespace> |
<name>-routes | hasRoutes() | routes/<file> |
<váš tag> | publishesStubs() | Cieľ, ktorý odovzdáte |
php artisan vendor:publish --tag=comments-config
php artisan vendor:publish --tag=comments-migrations
php artisan vendor:publish --tag=comments-translations
php artisan vendor:publish --tag=comments-views
php artisan vendor:publish --tag=comments-routes
php artisan vendor:publish --tag=comments-stubsKonfiguračné súbory
hasConfigFile() zlúči config/<name>.php pod kľúčom <name> a publikuje ho pod tagom <name>-config. Ak chcete dodať inak pomenovaný súbor, odovzdajte holý názov súboru — kľúč sa riadi názvom súboru, tag zostáva <name>-config. Prípona .php je voliteľná:
$package
->name('comments')
->hasConfigFile() // config/comments.php → config('comments.*')
->hasConfigFile('comments-webhooks'); // config/comments-webhooks.php → config('comments-webhooks.*')
// both files publish under the comments-config tagViews a preklady
hasTranslations() načíta resources/lang v mennom priestore <name> a publikuje ho do lang/vendor/<name>. hasViews() načíta resources/views v mennom priestore <name> — alebo v tom, ktorý odovzdáte, napríklad hasViews('talk') — a publikuje ho do resources/views/vendor/<namespace>.
Routy za konfiguračným prepínačom
hasRoutes() načíta routes/<file> a publikuje ho pod tagom <name>-routes. Voliteľný druhý argument pomenúva boolovský konfiguračný kľúč, ktorý sa číta prísne ako Config::boolean() — hostiteľ tak routy vypne aj z .env: false, 0, '0', 'false', 'off' a 'no' súbor vynechajú (bez ohľadu na veľkosť písmen); true, 1, '1', 'true', 'on', 'yes' alebo nenastavený prepínač — chýbajúci kľúč, null či prázdne '' (KEY= u hostiteľa) — ho načítajú. Čokoľvek iné — 'disabled', 'ture', 2 — vyhodí pri boote InvalidConfigurationException, takže preklep routy nikdy nenačíta:
// configurePackage()
$package
->name('comments')
->hasConfigFile()
->hasRoutes('comments.php', 'comments.routes.enabled');
// config/comments.php
return [
'routes' => [
'enabled' => true, // false — or 'off', '0', 'no' from env — drops the package routes entirely;
// a blank value (KEY=) counts as not set and loads them
],
];Aliasy tried
hasFacadeAlias() zaregistruje alias triedy cez AliasLoader Laravelu. Bez konfiguračného kľúča je alias vždy základný názov triedy; s kľúčom rozhoduje hodnota v konfigurácii pri registrácii providera — boolovské hodnoty v štýle env sa rozpoznajú, takže 'off' z .env alias vypne a nevznikne alias s názvom „off“, prázdna hodnota sa počíta ako nenastavená a ponechá základný názov a hodnota, ktorá nie je ani boolovským zápisom, ani neprázdnym reťazcom, vyhodí výnimku:
| Hodnota v konfigurácii | Výsledok |
|---|---|
| Bez konfiguračného kľúča | Alias = základný názov triedy. |
true / 1 / '1' / 'true' / 'on' / 'yes' | Alias = základný názov triedy. |
| Kľúč chýba alebo je prázdny ('' / len medzery — nenastavený) | Alias = základný názov triedy. |
null (výslovne) / false / 0 / '0' / 'false' / 'off' / 'no' | Alias sa nezaregistruje. |
| Akýkoľvek iný neprázdny reťazec | Tento reťazec je názvom aliasu. |
| Čokoľvek iné (2, 1.5, pole) | Pri registrácii vyhodí InvalidConfigurationException. |
// configurePackage()
$package
->name('comments')
->hasConfigFile()
->hasFacadeAlias(Comments::class, 'comments.alias');
// config/comments.php
return [
'alias' => true, // registers the alias "Comments"
// 'alias' => 'Talk', // registers the alias "Talk" instead
// 'alias' => false, // registers no alias — as do null, 'off', '0' and 'no'
// 'alias' => '', // blank counts as not set — registers "Comments"
// 'alias' => 2, // throws InvalidConfigurationException at register time
];Príkaz about
contributesToAbout() pridá do php artisan about sekciu pomenovanú podľa balíka (name() s veľkým začiatočným písmenom). Bez callbacku zobrazí názov balíka; pre viac údajov odovzdajte closure, ktorá vracia dvojice popis/hodnota. Closure sa spúšťa pri vykreslení príkazu — všetko citlivé preto maskujte:
use Illuminate\Support\Str;
$package
->name('comments')
->contributesToAbout(); // section "Comments" → Package: comments
$package
->name('comments')
->contributesToAbout(static fn (): array => [
'Package' => 'comments',
'Key type' => (string) config('comments.key_type'),
'API key' => Str::mask((string) config('comments.api_key'), '*', 7), // never render a raw secret
]);php artisan aboutĽubovoľné stuby
publishesStubs() je únikový východ pre súbory, ktoré nezapadajú do žiadneho iného pomocníka — publikuje zdrojovú cestu do cieľovej pod tagom, ktorý si zvolíte:
$package
->name('comments')
->publishesStubs(
$package->basePath.'/stubs', // source (the base path is already resolved here)
base_path('stubs/comments'), // destination in the host
'comments-stubs', // your tag
);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.