---
title: "Väzby a observery — Package Toolkit for Laravel | Roundly"
description: "Naviažte kontrakt na triedu z konfigurácie a pripojte observer ku konfigurovateľnému modelu — z register() a boot()."
url: https://roundly-consulting.com/sk/open-source/navody/package-toolkit-for-laravel/vazby-a-observery
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)

# Väzby a observery

register() aj boot() zostávajú prepísateľné pre vlastné zapojenie — prepíšte ich a najprv zavolajte rodičovskú metódu. Najčastejšie zapojenie riadené konfiguráciou pokrývajú dva pomocníci:

```php
public function register(): void
{
    parent::register();

    // Bind a contract to the class named in config, with a default. Absent/null/blank → the
    // default; a value that isn't an existing class implementing the contract (false, a
    // typo'd class name) throws InvalidConfigurationException when the contract resolves.
    $this->bindFromConfig(CommentRepository::class, 'comments.repository', EloquentCommentRepository::class);
}

public function boot(): void
{
    parent::boot();

    // Attach an observer to the model named in config.
    $this->observesModel('comments.models.comment', CommentObserver::class);
}
```

## bindFromConfig()

bindFromConfig(string $contract, string $configKey, string $default) naviaže kontrakt na closure, ktorá pri každom resolvovaní prečíta konfiguračný kľúč a danú triedu vytvorí cez kontajner. Chýbajúci kľúč, null alebo prázdna hodnota ('' či len medzery) naviaže predvolenú triedu. Akákoľvek iná hodnota musí byť názvom existujúcej triedy, z ktorej sa dá vytvoriť inštancia, ktorá je $contract a nie je samotným kontraktom — false, preklep v názve triedy, trieda nesprávneho typu, abstraktná trieda či samotný kontrakt (v akejkoľvek veľkosti písmen, s úvodnou spätnou lomkou aj bez nej) vyhodí pri resolvovaní kontraktu InvalidConfigurationException („Configuration value \[comments.repository\] must be a class-string of \[{contract}\], \[{given}\] given.“), nikdy sa potichu nepoužije predvolená trieda. Ak je kontraktom konkrétna trieda, môže byť sama sebe $default. Volajte ju z register() po parent::register(), aby už bola konfigurácia balíka zlúčená.

## observesModel()

observesModel(string $configKey, string $observer) zistí triedu modelu z konfiguračného kľúča a zaregistruje na ňu observer. Trieda sa overí cez ModelResolver bez predvolenej hodnoty, takže kľúč je povinný: chýbajúci alebo prázdny kľúč či kľúč, ktorý neurčuje Eloquent model, vyhodí InvalidConfigurationException už pri boote namiesto tichého zlyhania. Volajte ju z boot().

## Konfigurácia v pozadí

Oba kľúče sú v konfigurácii balíka, takže ich hostiteľ vymení bez zásahu do balíka:

```php
// config/comments.php
return [
    'repository' => EloquentCommentRepository::class,

    'models' => [
        'comment' => Comment::class,
    ],
];

// A host swaps either one without touching the package:
// 'repository' => App\Comments\CachedCommentRepository::class,
// 'models' => ['comment' => App\Models\Comment::class],
```

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