DI a akcie
Fasáda je odporúčaná voľba, nie jediná cesta. Rovnaký kód spúšťajú tri vstupy: fasáda MediaLibrary (najkratší zápis), manažér RoundlyConsulting\MediaLibrary\MediaLibraryManager — koreň fasády, singleton v kontajneri s aliasom media — injektovaný cez konštruktor (rovnaké API, explicitná závislosť, žiadne statické volania) a akcie (jednoúčelové triedy s execute(), ktoré skladáte do vlastných akcií, jobov a príkazov).
Injektovanie manažéra
use RoundlyConsulting\MediaLibrary\MediaLibraryManager;
final class AvatarController
{
public function __construct(private MediaLibraryManager $media) {}
public function store(Request $request): Media
{
return $this->media->for($request->user())->addFromRequest('avatar')->toBucket('avatar');
}
}Volanie akcie
use RoundlyConsulting\MediaLibrary\Actions\MoveMediaAction;
use RoundlyConsulting\MediaLibrary\Actions\RegenerateVariantsAction;
app(MoveMediaAction::class)->execute($media, $otherUser, 'gallery', 'cold');
app(RegenerateVariantsAction::class)->execute($media, only: ['thumb'], force: true);Metóda fasády → akcia
| Metóda fasády | Akcia |
|---|---|
add*() / draft() → toBucket() | AddMediaAction |
attach() | AttachMediaAction |
bindDraft() | BindDraftMediaAction |
move() / moveToDisk() | MoveMediaAction |
moveVariantsToDisk() | MoveMediaVariantsAction |
copy() | CopyMediaAction |
replace() | ReplaceMediaAction |
delete() / clear() / clearBucket() | DeleteMediaAction |
regenerate() / variants()->regenerate() | RegenerateVariantsAction |
pruneDrafts() | PruneDraftsAction |
- Každá zmena — z fasády, handlu for(), traitu či metódy modelu Media — prejde jedným slovesom manažéra, ktoré si z kontajnera vezme jednu akciu. Keď akciu v kontajneri prepíšete, zmena platí všade.
- MediaLibrary::fake() vymení manažéra aj v kontajneri, takže sa podvrhne aj injektovaný manažér. Priame volanie akcie fake obchádza.
- GenerateVariantsAction je interný stavebný blok (vykreslí presne tie definície, ktoré dostane) — varianty pregenerujete cez RegenerateVariantsAction alebo MediaLibrary::regenerate().
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.