---
title: "Metódy buildera — Package Toolkit for Laravel | Roundly"
description: "Každá metóda buildera Package — konfigurácia, migrácie, preklady, views, routy, príkazy, aliasy, about a stuby — aj s publish tagom."
url: https://roundly-consulting.com/sk/open-source/navody/package-toolkit-for-laravel/metody-buildera
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Package Toolkit for Laravel](https://roundly-consulting.com/sk/open-source/navody/package-toolkit-for-laravel.md)

# 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. Keď ho hostiteľ publikuje, načíta sa namiesto neho publikovaná kópia. 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:

```php
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 |

```bash
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-stubs
```

## Konfigurač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á:

```php
$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 tag
```

## Views 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:

```php
// 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
    ],
];
```

## Publikované súbory rout

Ak v hostiteľskej aplikácii existuje routes/<file>, provider načíta túto kópiu namiesto súboru balíka. Hostiteľ routy publikuje, aby ich zmenil — URI, middleware, názvy — a upravuje už len kópiu; nič ďalšie netreba. Súbory rout pomenúvajte podľa balíka (comments.php, nie web.php), aby publikovanie nikdy nesmerovalo do vlastného súboru rout hostiteľa:

- Kópiu už nenačítavajte cez require z routes/web.php ani iného súboru rout. Provider ju načíta sám, takže druhé načítanie zaregistruje každú routu dvakrát a php artisan route:cache zlyhá na duplicitných názvoch.
- Konfiguračný prepínač platí aj pre kópiu: keď je vypnutý, nenačíta sa ani jeden súbor. Ak chcete routy zapojiť sami — napríklad vo vlastnej skupine —, vypnite ich a kópiu načítajte cez require zo svojho súboru rout.
- Ak sa chcete vrátiť k routám balíka, kópiu zmažte. Keď nové vydanie balíka zmení jeho súbor rout, publikujte ho znova s --force (prepíše vaše úpravy) alebo zmenu zlúčte ručne.

## 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. |

```php
// 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:

```php
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
    ]);
```

```bash
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:

```php
$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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/package-toolkit-for-laravel.md)
