Connection módszerek viselkedés (viselkedés) a yii2

Magatartás - nem csak tudja akasztani a eseményművelet, hanem egy hatékony eszköz, amellyel korlátlan lehetőségeket kód újrafelhasználásának. A szépség a viselkedés, hogy lehet csatolni semmit. Például, ha minden modell updateItem () metódus, akkor lehet venni egy külön osztály és otnasledovat neki az összes modell. De mi van, ha a módszer nem csak egy modell, hanem az adatkezelő vagy nézetet? Mi van, ha nem minden modell számára hozzáférést kell biztosítani az általános módszer? Jön a támogatás magatartás.
Korábban már írtam a viselkedést. arról, hogy milyen események akkor felakasztják őket. Szükséges lenne, hogy festeni is szeretne létrehozni ezeket az eseményeket, de ma beszéljünk az eljárás rögzíti a viselkedést egy objektumot.

1. módszer: kötődése vezérlő

Ebben a példában, miután a felhasználó neve az úgynevezett setUserInfoInSession módszer Felhasználó Model

2. módszer: kötődés az objektum szintjén

Az első út, ha kell kötni egy bizonyos viselkedést akciófilm némi feltételekkel. Mert az én feladatom is elég, hogy kötődnek a viselkedés szintjén a Felhasználó modell szerint.

A fenti példában a 3. csatlakoztatott viselkedés. Ketten közülük egy külön osztályt, és az utóbbi formában egy névtelen függvényt. Ha egy külön osztályt, kiterjeszti a modell az említett állami módszerek ebben az osztályban állnak a modellből. Szintén az osztályban lehet rendelni kiváltó magatartás esetén.
Példa viselkedés DateTimeBehavior.

Csatlakoztassa a középkategóriás modell, kapok egy hívást convertDate módszerek és convertDateToDB miután bejegyzések előtt érvényesítése.
Snap így végezzen minden osztályban, beleértve a vezérlő.

3. módszer: kötődése config

Esemény lehet regisztrálni, és a konfigurációs fájlban az összetevő beállításait.

Mind összekötve ugyanaz a három módszer: a globális függvényhívás metódushívást a tárgy vagy formában egy névtelen függvényt. Az én például -, hogy hívja az osztály módszer.
Továbbra is csak arra emlékeztetni, hogy maga az alkalmazás - ez is egy objektum, amely saját eseményeket. Így az is lehetséges, hogy csatlakoztassa a viselkedés

jó estét
Tanácsot, hogyan kell csinálni.
Van 2 modulok:
Az első modellben felhasználó, és a második SomeBehavior
Meg kell adni ezt a viselkedést nem jellemző, hogy a felhasználó $ user, hanem minden, ahogy volt, lenne hozzá csak viselkedés mód () Felhasználói modell.
Ebben az első modul független a második

Látom 2 módja van:
1) megjeleníti a felhasználó modell viselkedése a config:
Egy durva formában, valami ilyesmit:
osztály Felhasználói ...
viselkedések () visszatérő array_merge ([
...
], Yii :: $ alkalmazás-> params [ 'userBehaviors']);
>
>

és module2:
osztály module2 végrehajtja BootstrapInterface
public function bootstrap ($ app) $ alkalmazás-> params [ 'userBehaviors']. [];
$ App> params [ 'userBehaviors'] [ 'myBehavior'] = MyBehavior :: className ();
>
>

És 2 lehet elkapni AFTER_FIND Amennyiben a felhasználó és a hozzá keresztül attachBehavior ()
de ez a módszer úgy tűnik, hogy rosszabb, mint az első

A második módszer kevésbé átlátható, mint az első, az első tetszik a legjobban. Podbroschu egy másik ötlet: add események megtámadni viselkedést ($ this-> ravaszt (...)), és lehetővé teszi, hogy bárki is sugározzák a rakodók. Szintén nem átlátszó, de rugalmasabban (viselkedés lehet sugározni nélkül a tartózkodási engedély a konfigurációs fájlban, hasznos, hogy integrálja a két fél a modulok, amikor átírta az osztály bármelyik közülük csak öröklés).

Kapcsolódó cikkek