Service réteg és vezérlők yii2

Továbbra is belevetik magukat a tervezés és fejlesztés. Az előző cikkben a design domain szervezetek írtunk egy teljes egység egység Alkalmazott tartomány saját üzleti logika, hogy leírja a személyzet biztosított. Most kell valahogy dolgozni vele a vezérlő, egy adatbázisban tárolják, és kap vissza. De a Munkavállaló nem tartalmaz egyetlen sort az adatbázisban, így nem lehet megmenteni. Mit kell tenni?







Általában ebben az esetben megteremti a külső tároló létesítmény (Repository), amely akkor lép működésbe körül entitások, tartósítási eljárások:

És ez EmployeeRepository lehet használni a megfelelő hely a számunkra. Például az alkalmazás szolgáltatásokat. Milyen szolgáltatásokat, és mit csinálnak?

szolgáltató alkalmazások

Az összes kódot a vezérlés tárolja kényelmetlen. Ennek oka kell szólnia az alábbiakban. Ehelyett van egy népszerű gyakorlat a szűk körökben a kódot a logikája a vezérlő kivonat külön osztályokban, az úgynevezett alkalmazás-szintű szolgáltatások (vagy alkalmazási szolgáltatások) és a szabályozók hivatkozni rájuk. Különösen nem megyünk bele a terminológiát, és csak látni, mi az.

A mi esetünkben, kommunikálni vezérlők böngészőt vagy API, szükségünk van egy szolgáltatás alkalmazás EmployeeService. hogy használ EmployeeRepository üzletvezető és az esemény EventDispatcher lenne valamennyi műveletet munkavállalói anyag:

Mi lehet továbbítani nagyszámú paramétereket minden egyes módszer:

De a félreértések elkerülése érdekében a saját érdekében, és ezek száma készletek általunk összegyűjtött egyéni gépelt adatszerkezet (Data Transfer Object), mint AddressDto:

Miután Zen ismeretek OOP az intenzív, sok kérte, hogy valami jelentősebb, a Yii2 Framework, hogy az új ismeretek a gyakorlatban. És még a fórumon azt mondta, hogy vár rám a keret. Ahogy ígértem a blog, akkor hamarosan elindít egy nagy többnapos workshop a fejlesztése egy online áruház Yii2 a legjobb gyakorlatokat.







Nos, nézzük tovább! Már megtanultam egy kicsit a lényege a design az első részben, és még elő egy kis alkalmazás, az utóbbi. És megbeszéltük, hogy mi tároló tartomány szervezetek az adatbázist, hogy a tárolóból. És még tette a teszt emulátor és elkészített teszteket. Olvasás előtt minden készen megoldások ma navelosipedim saját végrehajtási adattár használata nélkül ORM-pártrendszerek.

Egyesek néha elgondolkodom, hogy hogyan lehet programozni keretek használata nélkül ActiveRecord és szifilisz, és miért ilyen „egyszerű” az arcon közvetlen munka mezőket az adatbázisban nem tetszik a munkaerő-PFSZ-Schnick. És sokan kérdezni, hogy a vizsgálatokat meg kell vizsgálni, és ez nem szükséges. És ha kell ellenőrizni saját módszerekkel, vagy nem? Megértjük ezeket a kérdéseket.

Webszeminárium-Bemutatónkban összehasonlításához protokollok RPC távoli hívás eljárások, hozzáférés a SOAP és REST architektúra tárgyak végrehajtani egy API dolgozni az oldalon. Mi tekinthető írásban az API-t RESTful projekt Yii2 keretrendszer és annak tesztelése segítségével Codeception.

De mi van, ha az ilyen dolgok

Vezérlők rángatózik csak EmployeeService. Ő velünk van, és egy sor csúszásmentes esetek, amelyek már működnek szervezetek. Közvetlenül a lényege a vezérlő nincs hozzáférése.

Köszönöm. Örömmel töltött fél óra élete olvasás a cikk.
Alig várom, hogy a folytatása!

Csak egy pár kérdés:

1. Dto tárgyak megtehetnek mező nyilvános? Nem ez sérti a beágyazás?

2. Ha több módszer a szolgáltatás, például Ön által leírt UserService. Néhány módszereket kell passwordHasher, néhány nem. Kiderül, hogy annak érdekében, hogy indítsunk egy módszert, amely changeEmail mi kell még, hogy adja át a kivitelező tárgy passwordHasher, ami ebben az esetben nem kell. Mi többnyire ilyen esetekben? Service van osztva több alkatrész? Vagy ahogy van használunk fel?

1. DTO - egy adatstruktúrát (csere asszociatív tömb) helyett a teljes objektum.

2. CQRS megközelítés a Command busz minden csapat (DTO) van írva az azonos osztályba tartozó kezelő. Például ProductCreateCommand csapat ProductCreateHandler és a vezérlő a csapat minden dob a busz itt és itt. Még több kódot, de nem extra szolgáltatások inektyatsya. Tehát vagy több részre osztott, vagy nem érdekel az extra memória polkilobayta PasswordHasher.

És ahol felveheti a tranzakciót? Talán a szabályozó, hogy valami ilyesmi?