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: