Viselkedés - alapfogalmak - a végleges útmutató Yii 2

Magatartás (viselkedés) - egy példány az Yii \ base \ viselkedés, vagy egy osztály, amely származik belőle. Viselkedés, más néven szennyező. Ezek lehetővé teszik, hogy bővül a meglévő komponensek anélkül, hogy változtassa meg a leszármazási fát. Egyszer csatolt egy komponense viselkedését, módszerek és tulajdonságok „beágyazott” a komponens, és rendelkezésre állnak ugyanúgy, mintha nyilvánították a babosztály. Ezen túlmenően, a viselkedés reagálni az eseményekre. generált komponens, amely lehetővé teszi, hogy finomhangolása vagy módosíthatja a rendes végrehajtását a kód komponens.

létrehozása viselkedések

Viselkedés által létrehozott kiterjesztve az alap osztály Yii \ base \ viselkedés vagy örökösei. Például,

A fenti példában, a viselkedése egy osztály nyilvánított app \ components \ MyBehavior amely 2 prop- 1 tulajdonságait és prop2. és egy ize () módszer. Felhívjuk figyelmét, prop2 ingatlan deklarálva getter getProp2 () és a szetter setProp2 (). Ez azért lehetséges, mert a Yii \ base \ viselkedés a gyermek osztály Yii \ base \ BaseObject. amely lehetővé teszi a meghatározását tulajdonságait get és set metódusok.

Mivel ez az osztály egy magatartás, ha csatlakozik egy komponens, az alkatrész is elérhető lesz ingatlanok prop- 1 és prop2. és ize () módszer.

Tipp: Bent a viselkedés utalhat egy alkatrészt, amelyhez kapcsolódik a Yii ingatlan \ base \ Magatartás :: $ tulajdonosa.

Feidoigozókomponensében események

Ha a viselkedés köteles válaszolni alkatrész események, amelyhez kapcsolódik, meg kell, hogy felülbírálja a módszer Yii \ base \ Magatartás :: események (). Például,

események () metódus, vissza kell adnia az események listáját, és azok rakodók. A fenti példában, bejelentése és eseménykezelő EVENT_BEFORE_VALIDATE beforeValidate (). Adjon az eseménykezelő, használja az alábbi módokon:

  • húr módszer neve a jelenlegi viselkedés, mint a fenti példa;
  • egy tömb, amely tartalmaz egy objektumot, vagy egy osztály neve és egy metódus nevet, például, [$ tárgy, „methodName”];
  • névtelen függvényt.

eseménykezelő függvényt kell kinéznie, ahol a $ esemény eseményt tartalmazza paramétert. További információkért lásd: Események.

csatolása viselkedések

Csatolja a viselkedés egyik összetevője lehet mind statikusan és dinamikusan. A gyakorlatban, gyakran használják a statikus mellékletet.

Csatolásához viselkedés statikusan, akkor felülírja viselkedést () metódus a komponens, amely meg kell csatolni. viselkedések () módszert kell visszaküld egy listát a viselkedés konfigurációk. Configuration viselkedés a neve egy osztály viselkedését, illetve egy sor a beállításait:

Akkor társult egy nevet a viselkedés megadásával, mint egy kulcsfontosságú eleme a tömb konfigurációjának megfelelő viselkedést. Ebben az esetben a viselkedés named. A fenti példában a két megnevezett viselkedés: myBehavior2 és myBehavior4. Ha a név nem jár a viselkedést, mint viselkedést úgynevezett anonim.

Csatolásához viselkedés dinamikus, akkor hívja a módszer Yii \ base \ Component :: attachBehavior () a szükséges elemek:

Használata Yii \ base \ Component :: attachBehaviors () lehetővé teszi, hogy rögzítse több viselkedést egyszerre. Például,

Csak csatlakoztassa a komponens viselkedését lehetséges konfiguráció segítségével. az alábbiak szerint:

További információkért lásd a konfigurációk.

használata viselkedések

A felhasználásra viselkedés, meg kell csatolni a komponens a fent leírt módon. Miután a viselkedés csatlakozik egy komponenst, annak használata nem okoz nehézséget.

Akkor hozzáférhet a nyilvános változók vagy tulajdonságait. bejelentette a get és alkotóinak viselkedés alkatrész, amelyhez kapcsolódik:

Hasonlóképpen, akkor hívja a nyilvánosság módszerek viselkedés,

Felhívjuk figyelmét, hogy bár a $ komponens nem rendelkezik tulajdonságokkal prop- 1 és módszer ize (). fel lehet használni, mintha tagjai ebben az osztályban.

Abban az esetben, ha két viselkedés, melynek tulajdonságai vagy módszerek az azonos nevek kapcsolódik ugyanahhoz a komponens lesz előnyt viselkedését csatolt előtt.

Ha csatolja a viselkedés egyik összetevője a név, akkor lehet alkalmazni, hogy a viselkedése, hogy a név, az alábbiak szerint:

Ön is kap a viselkedés csatolt alkatrész:

kikapcsolódás viselkedések

Ahhoz, hogy elválassza a viselkedését a komponens, akkor hivatkozhat egy eljárás Yii \ base \ Component :: detachBehavior (). nevének megadásával kapcsolatos viselkedését:

Csak kiold minden lehetséges viselkedés:

Használata viselkedés TimestampBehavior

Összefoglalva, nézzük meg a Yii \ viselkedés \ TimestampBehavior - magatartás, amely automatikusan frissíti attribútumok időbélyeggel, miközben az Active Record modellek segítségével a betét (). update () vagy menteni ().

A kezdéshez meg kell csatolni viselkedése az Active Record osztályban. ahol szükség van rá:

A fenti konfiguráció leírása a következő:

  • behelyezésekor új felvétel magatartást kell rendelni az aktuális időbélyeg UNIX attribútumok created_at és updated_at;
  • amikor frissíti a meglévő rekord magatartást kell rendelni az aktuális UNIX időbélyeg attribútum updated_at.

Megjegyzés: A fenti konfiguráció dolgozni MySQL, created_at updated_at típusa és legyen int (11). Ebben lesz tárolva UNIX időbélyeg.

Most, ha menteni az objektum Felhasználó. Valami a created_at updated_at és attribútumok kerülnek automatikusan a UNIX időbélyeg időpontjában a rekord menti:

TimestampBehavior modor tartalmaz egy hasznos módszert touch (). amely meghatározza az aktuális időbélyeg a megadott attribútum, és tárolja azt az adatbázisban:

más viselkedést

Amellett, hogy a felvetett kérdések, vannak más már megvalósított magatartást. Mindkét beépített és harmadik fél:

  • Yii \ viselkedés \ BlameableBehavior - automatikusan feltölti ezeket a tulajdonságokat az aktuális felhasználói azonosító.
  • Yii \ viselkedés \ SluggableBehavior - automatikusan feltölti a megadott attribútum használható az URL szöveget, származhat más tulajdonság.
  • Yii \ viselkedés \ AttributeBehavior - automatikusan beállítja ezt az értéket egy vagy több attribútumok ActiveRecord akkor aktiválódik, ha bizonyos események.
  • yii2tech \ ar \ softdelete \ SoftDeleteBehavior - eljárásokat biztosít a "puha" törlés és voosstanovleniya ActiveRecord. Azaz kiállítási vagy állapotjelző, amely azt jelzi, hogy a rekord törlésre kerül.
  • yii2tech \ ar \ pozíciója \ PositionBehavior - lehetővé teszi, hogy kötelezze bejegyzések Menekülő olyan speciális technikákat. Az információ van tárolva egy egész területén.

Összehasonlítás vonások

Annak ellenére, hogy a viselkedés hasonló az a tulajdonság, hogy „kiépítése” tulajdonságait és módszerek az alap osztály, hogy sok különbség. Mindketten van előnye és hátránya, és inkább kiegészítik egymást, nem pedig helyettesítik.

profi viselkedés

Viselkedés, valamint bármely más osztályokba, amelyek támogatják örökséget. Vonások is lehet tekinteni, mint kopipeyst szinten nyelvet. Nem támogatják örökséget.

Viselkedés lehet csatolni, és dinamikusan független a komponens, anélkül, hogy a módosító komponens osztálya. Ahhoz, hogy használni Személyiségjegyek módosítani kell osztályban.

Viselkedés, ellentétben Személyiségjegyek szabhatja.

Viselkedés lehet állítani oly módon, hogy válaszoljon az alkatrész eseményeket.

Összeférhetetlenség tulajdonságnevei és viselkedések módszerek társulnak alkatrész, megoldódnak alapján a sorrendben vannak csatlakoztatva. Név konfliktusok okozta különböző tulajdonság, igényel kézi átnevezés ellentétes tulajdonságok és módszerek.

profik vonások

Vonások sokkal termelékenyebb, mint a magatartás, amely, mint tárgyak több időre van szükségük és a memória.

Sok IDE támogatás dolgozik a tulajdonság, mivel azok nem szabványos nyelvi konstrukció.

Kapcsolódó cikkek