Csatlakozás mojolicious modell az üzleti logika

Egy változata a kapcsolat automatikus osztály modellek a megadott könyvtár

Mojolicious - keret írásban webes alkalmazások, van saját arzenál sok hasznos funkciókat, mint az első tűnik, minden alkalomra. De ha elkezd dolgozni velük szorosan és próbálja meg írni egy nagy app, akkor botlás után a helyzet, amikor a szükséges döntéseket hiányoznak az alapkészlet. Számomra a hiányzó Mojo hiánya volt a modell. Bár furcsa módon, ez a funkció nincs megvalósítva, vagy a Mojo, plug-in hozzá, keressen a CPAN és a Google nem tárt fel a megfelelő plug-inek.

Az ő idejében a keret Catalyst arra használták, hogy MVC. és nem akarta feladni ezt az elvet a fejlesztés mojo.

Szóval, mit akarsz? Kívánatos lenne modellek Catalyst, a vezérlő, hogy a hívások a következőképpen történik:

és ennek keretében azt betölteni az összes modell a megfelelő könyvtárba.

A Mojo programozó maga felajánlotta, hogy csatolja a szükséges funkciókat (például, hogy egy külön könyvtárba modulok), vagy írjon adatok feldolgozását és az üzleti logika közvetlenül a vezérlő. Hasonló megközelítést használt web keretek más programozási nyelvek, például Laravel a php, python lombikot, és élvezze a Go.

végrehajtás

Tehát, hogy hozzon létre egy modellt készítettek a következő lépéseket (mutat a példa egy új alkalmazás):

  • Generál mojo-alkalmazás: Mojo generál app MyApp cd my_app / lib.
  • Megteremtve a szükséges fájlokat és könyvtárakat: touch MyApp / Model.pm mkdir MyApp / típus érintse MyApp / Modell / Base.pm.
  • Szabályok MyApp.pm:

A MyApp.pm fájlt hoztunk létre egy objektum osztály MyApp :: Model. amely átment a kivitelező aktuális objektumot. Transzfer a kivitelező az objektum van szükség annak érdekében, hogy izzad ki a modellt alkalmazni lehetne minden módszer a jelenlegi osztályra.

A MyApp / Model.pm a kivitelező, akkor megtalálja a fájlokat a MyApp / típus / osztály segítségével Mojo :: Loader és módja keresést. Itt azt kell tisztázni, hogy Mojo :: Loader nem tud rekurzív keresztül könyvtárait, azaz ha MyApp / típus könyvtár a következő:

A Mojo :: Loader-> Keresés (MyApp :: Model ") figyelmen kívül hagyja MoreModel könyvtárat és terhelési modult csak a gyökérkönyvtárban. Egy másik változat szerint egy további ciklus felsorolni az összes alkönyvtárat a gyökérkönyvtárban, és etetni őket is Mojo :: Loader letölthető modulok.

Ezután a kódot. A kivitelező a modell töltünk minden egyes modul találtak a modell (kivéve a MyApp :: Model :: Base. Róla később), és töltse be a hash modulokat. get_model metódus visszaadja a megfelelő osztályban a kért vagy bukik egy hiba.

A MyApp / Modell / Base.pm fájl általunk megadott összes módszert is öröklik a többi modell. Ahogy a neve is sugallja, egyértelmű, hogy a szülő osztály összes többi modul a modellek. sor

Azt mondja, hogy szükség van egy olyan elem egy objektum

mint egy osztály módszer. Ie hívja $ ön-> alkalmazás-> config egyenértékű $ self -> -> config. Ez szintaktikai cukor a teremtője mojo.

Mi egy alkalmazást lehet érteni nézi a kódot MyApp.pm modult. Ez az objektum az első osztályú MyApp.pm. mentünk a kivitelező.

Most egy példát egy egyszerű modul a modell, például SajátAlkalmazás / Model / MyModel.pm:

Hívd fel ezt a módszert a vezérlő a szél:

Ebben az esetben ez lesz az úgynevezett segítő modell szerint. Határozottan az eljárás MyApp :: indításkor. Ez helper metódus visszaadja a hívás get_model MyApp osztály objektum :: Model.

Nos, ez minden. Mint látható, semmi igazán bonyolult. Remélem, hogy a képesség, hogy egy kis időt elérem a kezében rendezni az egészet, mint egy plugin a Mojo, hiszen az utóbbi időben már dolgozik elég aktívan, és írni ugyanazt a kódot folyamatosan fáradt. Legalább githabe projekt ebben az esetben már létrehozott :)

Kapcsolódó cikkek