Command busz- (parancs)

Command busz Laravel - egy kényelmes módja, hogy magukba (elkülöníteni) a feladatokat az alkalmazás egy egyszerű és érthető „csapat”. Ahhoz, hogy megértsük a találkozó a csapatok, tegyük fel, hogy írunk egy alkalmazást amit el felhasználóink ​​podcast.

Amikor egy felhasználó vásárol egy podcastot, meg kell, hogy néhány lépés, hogy van, hogy vonja vissza pénzt a kártyán, vegyen fel egy bejegyzést az adatbázisban, hogy a vásárlás Sikeresen lezajlottak, és küldjön egy e-mailt a vásárlási bizonylatot. Talán még meg kell végeznie néhány ellenőrzés -, és hogy a felhasználó jogosult-e tenni, hogy vásárolni ezt a különleges podcast.

Általában, mi tegyük mindezt logika a vezérlő, ez a megközelítés azonban számos hátránya van. Először is, a vezérlő osztályban jellemzően több módszer feldolgozására HTTP-kérések és pozicionálási logikát minden módszerrel teszünk vezérlők túl nagy, nehezen olvasható, és nehéz fenntartani. Másodszor, a kód nehéz használni a vezérlő kontextus és a HTTP-kérés (például, ha azt akarjuk, hogy végezze el a vásárlási podcastok a parancssorból, vagy sorban). Harmadszor, nehéz tesztelni, mert van, hogy versenyez a HTTP-kérést és értelmezné a HTTP-választ.

Ezért ahelyett, hogy ezt a logikát a vezérlőben, mi megszervezzük az úgynevezett irányító és hívják PurchasePodcast.

csapatépítés

Egy team segítségével kézműves-csapat, hogy: parancs:

Alkotó ezt a parancsot kerül a osztálya app / parancsok mappát. Alapértelmezésben a parancs két módszert - a kivitelező és a fogantyú módszer. Segítségével a tervező, akkor add meg a szükséges függőségeket A csapatban osztályban, és kezeli a módszer valóban végrehajtja a parancsot. Például:

fogantyú módszer is vehet függően érvek (típus hint), valamint a tervezők. Ahogy a tervező, akkor automatikusan alkalmazni a megadás a NOB tartályban.

parancsvégrehajtás

Létrehoztunk egy csapat, akkor most elindul? Természetesen tudjuk teljesíteni fogantyú eljárás egy osztály, de jobb, hogy futtatni a parancsot busz Laravel. Az előnye ennek a megközelítésnek az alábbiakban tárgyaljuk.

Ha megnézzük az alap vezérlő az alkalmazás, amely meghosszabbítja a saját vezérlő, látni fogja tulajdonság DispatchesCommands. Ez a jellegzetesség lehetővé teszi, hogy futtatni parancsokat a feladási eljárás. Például:

A parancs végrehajtja a parancsot busz, és átveszi az egész rutin, hogy biztosítsák osztályú csapat minden szükséges függőségeket felsorolt ​​érv a konstruktorargumentum és az eljárás fogantyút.

Akkor használd ezt a parancsot busz bármelyik osztályban - a kiegészítő jelleg Illuminate \ Foundation \ Bus \ DispatchesCommands. Ha azt szeretnénk, hogy a parancs a busz például a kivitelező adja meg a paramétereket (type hint) világítják meg a tárgyat \ szerződések \ Bus \ diszpécser. És végül, akkor egyszerűen használja a busz homlokzat futtatni a parancsot:

Átadás érvek a kérelem

Szinte mindig, akkor meg kell, hogy a HTTP-kérelem adatait (például egy mintát a $ _POST) a csapat. Ahelyett, hogy arra kényszerítve, hogy kézzel írják le az egyes kérelemre Laravel kínál valami automatizált. Nézd meg az eljárás dispatchFrom vonás DispatchesCommands:

Ez a módszer kivitelező néz, akinek a neve a telt, mint az első érv, és kivesz egy változó $ kérés (HTTP-kérés, vagy akármilyen tárgy típusú ArrayObject) azokat a kulcsokat, amelyek megfelelnek a változó nevét az az érvelés, a kivitelező. Például, ha van egy változó érvek kivitelező $ keresztnév. akkor van rendelve az értéke FIRSTNAME HTTP-kérést.

Akkor át egy tömb, mint a harmadik argumentum alapértelmezett:

Futó ezt háttér

Command busz lehet használni nem csak azonnali elindítását feladatok a jelenlegi kérést, hanem fel a csapat a helyén fut őket egy külön folyamat. Így a parancs busz lehet a fő eszköze sorban.

Ahhoz, hogy hozzon létre egy csapatot, amely a háttérben fut, adjuk hozzá a zászló --queued:

Alkotó osztály örökli a felület nézzen \ szerződések \ Sor \ ShouldBeQueued és a tulajdonság SerializesModels. Ez a funkció lehetővé teszi, hogy a csapat bekerül a sorban a későbbi elindítását a hallgató sorban, és növeli a képességet sorosításához és deserialize Ékesszóló-modell.

Ha már létrehozott egy csapatot, és szeretnénk, hogy ez a munka a háttérben, csak manuálisan hozzá munkagépek nézzen \ szerződések \ Sor \ ShouldBeQueued. Ez az interfész nem tartalmazza a szükséges módszerek és egyszerűen egy mutatója a parancs busz. Ezt követően a küldő módszer ahelyett, hogy futtatja a parancsot, tedd a sorban később indul a háttérben.

csapat szállítószalagok

Mielőtt a csapat lesz a szabályzó elé, akkor hozza azt a futószalagon más osztályokba. Szállító parancsokat is dolgozik, mint a HTTP-közvetítők. Például akkor csomagolja az összes által végrehajtott műveletek a csapat az ügylet, vagy egyszerűen, hogy jelentkezzen az a tény, annak végrehajtását.

Ahhoz, hogy hozzá egy szállítószalag a parancs busz, hívja pipeThrough menedzser mód az eljárás App \ Providers \ BusServiceProvider :: boot:

Szállítószalag ismertetett parancsokat eljárás fogantyú:

Osztályok, hogy szükség van a szexuális csővezeték, keresi és letölthetők a szolgáltatás tartályba. így megadhatja a függőségeket saját konstruktőrök.

Mivel a szállítóelem is használható áramkör:

Csatlakozzon most