Comportamente de la alte metode din yii2 - saturație în rusă

Știu că comportamentele pot fi personalizate prin suprimarea metodei de comportament, care va returna un tablou cu configurațiile fiecărui comportament atașat. Vreau să fac în plus față de această metodă a fost încă o alta, să zicem, behaviors2, formatul pe care am fost indentichen care ar face exact acelasi lucru - pentru a păstra datele privind comportamentul.

Sarcina este de a colecta informații despre comportamente din ambele metode.

Examinând componentele codului, am dat seama că, pentru colectarea de informații de la responsabile ensureBehaviors metoda de comportamente, care, la rândul său, se execută aproape începutul fiecărei alte metode, care este într-un fel în legătură cu comportamentul. Primul gând este acela de a redefini:

În cazul în care am asiguraBehavior2 doar atașați restul de comportament.

Dificultate: Metoda care este responsabilă pentru atașarea comportamentului la componentă, attachBehaviorInternal este privată și metoda attachBehavior apeleazăBehaviors. Total: recursivitate.

Ieșire: adăugați o proprietate la clasă:

Și scrieți astfel:

Și apoi m-am gândit la asta. Se pare că funcționează, dar se pare ca o cârjă mare și grea. Dar funcționează. Vreau să vă cunosc părerea și posibilele soluții la această problemă.

Metoda funcțională a comportamentului ar trebui să rămână aceeași. Știu că puteți folosi comportamente și comportamente3, iar în comportamente trebuie doar să măsurați rezultatele acestor metode. Sau în comportamente pentru a adăuga o funcție care a luat o matrice, care este în ea, și sa întâlnit cu alții. Dar atunci ar fi imposibil să folosim moștenirea.

Vă sfătuiesc să renunțați la ideea de a împărtăși comportamentele conectate în mai multe metode. Iată argumentele mele:

Mecanism non-standard. Da, trebuie să programăm folosind un cadru, nu un cadru. Dar primul argument este că toată lumea știe ce comportamente sunt. Ce este analiza? personalizările trebuie să explice totul.

Flexibilitate falsă. Nu aveți suficient într-un singur loc pentru a adăuga comportamente2. Presupun că selectați un alt nume și o întrebare dacă toate modelele au nevoie de acest lucru. Și dacă unii vor avea nevoie de comportamente3. Codul pe care l-ai dat nu este o cârjă, poate fi doar un pic. El rezolvă în mod adecvat sarcina de separare, dar nu cred că va fi suficient de flexibil.

Soluția standard pentru această problemă pentru mine pare destul de normală și cât mai flexibilă posibil.

Nu este necesar să ghiciți unde și cum. Comportamentele standard, numărul lor mare poate fi împrăștiat așa cum doresc.

Problema cu moștenirea este rezolvată după cum urmează:

Programatorul va lucra întotdeauna cu comportamente. metodele de formare a cărora vor fi determinate de sarcină. Este simplu și răcoros.

Articole similare