Jak vytvořit vlastní kontextové atributy v Laravelu

Vytváření vlastních kontextových atributů v Laravelu Schopnost Laravelu bezproblémově řídit vstřikování závislostí z něj dělá vývojářský framework snů. Jednou z jeho nejvýkonnější...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

31. 12. 2024

Jak vytvořit vlastní kontextové atributy v Laravelu

Vytváření vlastních kontextových atributů v Laravelu

Schopnost Laravelu bezproblémově řídit vstřikování závislostí z něj dělá vývojářský framework snů. Jednou z jeho nejvýkonnějších funkcí je kontextové atributy. Laravel poskytuje několik vestavěných kontextových atributů, ale můžete si vytvořit vlastní, aby vaše aplikace byly ještě výraznější a flexibilnější.

V tomto příspěvku se budeme zabývat tím, jak definovat vlastní kontextové atributy v systému Laravel a efektivně je používat v aplikaci.

Co jsou kontextové atributy?

Kontextové atributy umožňují vkládat konkrétní hodnoty, konfigurace nebo implementace do tříd přímo prostřednictvím atributů PHP. Pomáhají zefektivnit vstřikování závislostí tím, že eliminují potřebu ručního kontextového vázání v poskytovatelích služeb.

Průvodce krok za krokem: Vytvoření vlastního kontextového atributu

Vytvořme znovu Config vlastní atribut pro vkládání konfiguračních hodnot, podobně jako vestavěný atribut Laravel #[Config] přívlastek.

1. Definice třídy atributů

Laravel vyžaduje vlastní atributy pro implementaci Illuminate\Contracts\Container\ContextualAttribute rozhraní. Tím je zajištěno, že s nimi kontejner dokáže správně pracovat.

Zde je zvyk #[AppConfig] přívlastek:

<?php
 
namespace App\Attributes;
 
use Attribute;
use Illuminate\Contracts\Container\Container;
use Illuminate\Contracts\Container\ContextualAttribute;
 
#[Attribute(Attribute::TARGET_PARAMETER)]
class AppConfig implements ContextualAttribute
{
public function __construct(
public string $key,
public mixed $default = null
) {}
 
public static function resolve(self $attribute, Container $container)
{
return $container->make('config')->get($attribute->key, $attribute->default);
}
}

Vysvětlení:

  • Parametry konstruktoru: key určuje konfigurační klíč a default poskytuje náhradní řešení, pokud klíč neexistuje.
  • Metoda vyřešení: Načte hodnotu konfigurace pomocí úložiště konfigurace Laravel (config() helper).

2. Použití atributu ve třídě

Po definování můžete vlastní atribut použít v libovolné třídě. Vložme konfigurační hodnotu do kontroléru.

<?php
 
namespace App\Http\Controllers;
 
use App\Attributes\AppConfig;
 
class ExampleController extends Controller
{
public function __construct(
#[AppConfig('app.name')] protected string $appName
) {}
 
public function show()
{
return "Application Name: {$this->appName}";
}
}

Zde, #[AppConfig('app.name')] automaticky vloží hodnotu app.name konfigurační klíč do $appName nemovitosti.

3. Testování atributu

Chcete-li to vyzkoušet:

  1. Zajistěte, aby vaše app.name je nastaven v config/app.php:

    'name' => 'My Laravel App',
  2. Navštivte trasu, která obsluhuje show v metodě ExampleControllera měli byste vidět:

    Application Name: My Laravel App

Výhody vlastních kontextových atributů

  • Redukce šablonového kódu: Není třeba definovat vazby u poskytovatelů služeb.
  • Zlepšení čitelnosti: Díky atributům jsou závislosti jednoznačnější.
  • Podpora opakovaného použití: Používejte stejný atribut v různých částech aplikace.

Rozšíření konceptu

Tento přístup lze rozšířit o vytvoření kontextových atributů pro další závislosti, jako jsou:

  • Injektování klíčů API.
  • Řešení příznaků funkcí.
  • Poskytování konfigurací specifických pro danou službu.

Závěr

Vlastní kontextové atributy představují účinný způsob, jak zjednodušit vkládání závislostí a zlepšit čitelnost aplikací Laravel. Využitím ContextualAttribute rozhraní, můžete rozšířit funkce Laravelu tak, aby vyhovovaly vašim jedinečným potřebám projektu.

Zkuste si vytvořit vlastní atributy ještě dnes a udělejte svou kódovou základnu Laravel ještě elegantnější a výraznější!

Původní článek publikoval Nabil Hassen.

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google