NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Fasáda je odporúčaná voľba, nie povinnosť. Máte tri rovnocenné vstupné body:

  • Fasáda Options — najkratší zápis, vhodný pre väčšinu kódu.
  • Manager RoundlyConsulting\Options\OptionsManager vložený cez konštruktor — je koreňom fasády, preto má presne to isté API, len ako explicitnú závislosť bez statických volaní.
  • Akcie — jednoúčelové triedy s jedinou metódou execute(), ktoré skladáte do vlastných akcií, jobov a príkazov. Options má dve: ExportOptionsAction a ImportOptionsAction.

Vloženie managera

use RoundlyConsulting\Options\OptionsManager;

final class CopyTeamSettings
{
    public function __construct(private OptionsManager $options) {}

    public function __invoke(Team $from): string
    {
        return $this->options->exportJson($from);
    }
}

// The same API as the facade, handles included:
$this->options->for($team)->set(ThemeOption::class, 'dark');

Options::fake() vymení väzbu v kontajneri, takže OptionsManager získaný po tomto volaní je tiež fake.

Volanie akcie

use RoundlyConsulting\Options\Actions\ExportOptionsAction;
use RoundlyConsulting\Options\Actions\ImportOptionsAction;

// The raw actions — one execute() each:
$payloads = app(ExportOptionsAction::class)->execute($team, globalOnly: false); // list<OptionPayload>
$count = app(ImportOptionsAction::class)->execute($payloads);                    // int

Metóda fasády → akcia

Metóda fasádyAkciaexecute()
Options::export()ExportOptionsActionexecute(?Model $owner = null, bool $globalOnly = false): list<OptionPayload>
Options::exportJson()— (zakóduje export())—
Options::import()ImportOptionsActionexecute(list<OptionPayload> $payloads): int

Všetky ostatné metódy — get(), set(), handly, skupiny, observery či prepojenie s konfiguráciou — sú priamo na manageri; samostatnú akciu nemajú. Metóda managera resolveOptionInstance() je @internal (resolver pre prepojenie s konfiguráciou), preto na nej nestavajte.

DTO OptionPayload

Obe akcie pracujú s RoundlyConsulting\Options\DataTransferObjects\OptionPayload — jedným uloženým riadkom. Payloady si môžete zostaviť sami alebo ich získať z riadkov či JSON:

use RoundlyConsulting\Options\DataTransferObjects\OptionPayload;

$payload = new OptionPayload('theme', 'dark', ownerType: User::class, ownerId: 5);

OptionPayload::fromArray(['key' => 'theme', 'value' => 'dark']); // global row
OptionPayload::list($rows);                                      // rows or payloads → list<OptionPayload>
OptionPayload::listFromJson($json);                              // a JSON export → list<OptionPayload>

$payload->toArray(); // ['key' => 'theme', 'value' => 'dark', 'owner_type' => User::class, 'owner_id' => 5]

owner_id sa riadi podľa options.key_type — pri vlastníkoch s bigint je to int, pri UUID či ULID reťazec. fromArray() prevedie reťazce číslic na int a riadok, ktorý má len owner_type alebo len owner_id, považuje za globálny.

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

Odoslaní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.