From 135ce524ad5834ff7d186a4779f82f29ac79368b Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Fri, 9 May 2014 01:37:31 +0400 Subject: [PATCH] Used static structure diagram for application structure --- .../images/application-structure.graphml | 269 ++++++++++-------- docs/guide/images/application-structure.png | Bin 11259 -> 6762 bytes 2 files changed, 152 insertions(+), 117 deletions(-) diff --git a/docs/guide/images/application-structure.graphml b/docs/guide/images/application-structure.graphml index 2d98b63673..7413b75321 100644 --- a/docs/guide/images/application-structure.graphml +++ b/docs/guide/images/application-structure.graphml @@ -15,138 +15,176 @@ + - - + + - Application + widget - + - - + + + + + + - - - + + + - Components + component - + - - + + + + + + - - - + + + - Controller + view - + - - + + + + + + - - - + + + - Models + model - + - - + + + + + + - - - + + + - View + controller - + - - + + + + + + - - - + + + - Widgets + application - + - - + + + + + + - - + + - Entry script (index.php, yii.php) + entry script - + - - + + + + + - + - + + + - + + 0..* + + + + + + + @@ -157,100 +195,97 @@ - + + 0..* + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + 0..* + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + 0..* + + + + + + + - + + + + + + + + + + 1..* + + + + + + + + + + + + - + + 1 + + + + + + + diff --git a/docs/guide/images/application-structure.png b/docs/guide/images/application-structure.png index 5d25e6c21bc81ab0cb88cb774ef0d3fcc2ee3504..764c218266108dc8e63236d5c885d500f43f2a79 100644 GIT binary patch literal 6762 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 z z!Aa@@!j2|>==^D;U;<)AU7I+iG8T74J5VFaw|TMIfej>FpGQ{&#sCI)U* z6g^hh+9y{Mrz$$53#^rI(f^Qp-^Aa{mPC3;!9TE=@u&qYjhMrwj-?l1d_7oN2w1#q#>m~xUwqW;I1s!ZeRWi z_#w%xsD@Le32ih3CQc?^U5L{M{b9lb^Z*05B_6F?0XP{S48M61n~sDg4D_G|C@-9Z zvrg+@KV6*hU{C><;@v#^2BC~wJFr%V*Vz#+?kg907?_uHO$KHPNuVsvBxj*8jbm5W zU4dH}FCVQC&1yD$0B*--r3}P1`o)yqSpT%zh+D}@FPIfjE1_I)Hq+etD^-2soQ4f zEzoZqs^Y2~JeKKE9ErdI$Q^H`6tJf!cqkk&V!kSUGh+VLeEHi8|MlATn~n_#X!A&$ z?a8%qGuI8S%bhAg1fcKmd^i8xo zApuYAZ1_i30{oPX}e(N-X?5% z*3wK2J5jI@dh-U+JNkTg?b337l<(ph*et<_|<$Ywe2}%LaYD5D^p>3ML>_>XJx=zu#tugoEQpc3t4iSknw6tT4xy1Az%e}qVa5%A0HfpEG@)Ha0)d&26>0UpI4`i9S_-x* zUo!)+kJg^sMVMFUHe|2_k5n3&5Cfv8&EgYnYNiIHzV+|U>mSyhGUCZH(VhZ7$LZ>G?AVV0-_Y@D2Yl{q$s`j zfQ1_AB@`h@hXA3MP%v5jr zAP|W4)=jm0AkZN&2*i|e6autdAs9%3K%(DnsogN}9$Xk^eRFy;k-B{R%t z8h$)88YHJF%W53AiosCW*#d*0So^WHDKC8X@Y}v@a>AmwP-xG6XLRmGv%OK`Y_w5E zb3`hgaiIlD~0rF?Hk{Dk2u`4vzCOiw}*n$#v`%sJiPl6 z9Ba`tC$^f_#z#6WZkkJNXI5a(b^N(CRlPvz6n^?^Evh>8YjpL67b(9~{TD;Dz@5S= zG11i%4(v`>%%z%!2>f`+M@@vVkWX`ZFyTS9bxInQTb%XgqB!@PJh3Tfq?bKn#j{y3 zV~1ACCn&=aTQ+eY!ni~;NeQYzn*4z)0;1Lg;^vS7{oNAHbOLC60riK5FuGZTtPwAu zcIW=laN@6yz?dfgqud-qU_mfL&{1xNj1IT=$GNo*1UC7!RZmR0Zx2on?e(|*)Nj{9 zRMK$UUrn~7T;QGiIBQw8tB+O5kNf2ypp*c04Y-Dg}a$CJjDVB#PI89jD^#P?g zZ)E4S%(JKh`&lo)_m4489t9JR`Mmwpqs=pi=pXd8#k#S%u1=-xvbEJVEJok#(oB_6 zndKuMnB`65immS1&N!}&syv$M@^)EXBGQZO@$@_B5CYOv7y0w094uiYSt)gWdtMir z0Qc%0wjWIqs^<@QyD?iY+8zFSDveWj4=zSnedoD~ebj3;I~Et^ECiOs{C?$8pAWvON1DE_;?$vr#!TmG?5v?VjC9`&0Pt?{a2u{R*6oD8*#ulJhn0^tjnp5gZqC zXVwdMCZn-f)4Af0y+!7-Vgj{(C-;vwUTRoUNRqfB?gVizvutdjN_=72cX|76!?GED zWp|<8z815RK899#J~F(-3Owojn$QLme!uDry; zcv#1kb9Wz0w)e8{Q^!_5Hjbr=Bur?t=Xb@Y!;+%@7=L@_ca#HFmyk^_=->LPDSd`~AV8i#1sEwav z-78_QjommW_gQ{nf+hEs$nH94ePgFq{)#5nP6XT;BH%tzkVBNGboHupZ)G|3l~RP{ zH(P2Q5=Gip8g&u|X@jg}G>nx;p}K_mE=X>kyXU)zw*dX=ZHif)k%E+)wFjLD;;HtUt* zlAe?JYv8QhGJg(Zhkan?o~CW`j=RAo7a!04D9Bl@*{|V!b^hLosJ5vr@o_Z1P4u|> zq|e%)6Rvk|2n-uGBV5{UvEa_|(%o>sIu-l`8;+@c=NsOPBOdLQ;s77dYGgO{p=+rh z3o(B_7x1EU82L^F1=a{3sOs-9?8+mH&(buJ4kBP;vbXdCf%;<1S3ka8C#=sGdEE)q zUU%K><_)dwm4KuG_zu}pPmi2y70ZH%f(hQw}9w&j)f@oeRh zQ=yH$#G~BuZf$S)B@~kkQIa3!EU1#g#%RIwRcjQ(H{rRAiIf*hJ|YiyXQnr}d#?7Z z?Oh8qy)+}dbD4W)GSq?QdRg!!i6+`@CHTmlY=}Dg#YT{4gX4J%dOY$)bU<|IINZyK zvgWWqYn!urP8oaaz2{iPEKXoI*X)Ybp(n(vY7?)+a2X$j8$Ye)R_Pi!4ZRHzZt-HP zcKV6HMC3+k$mAv(>PAg>+6a(3Q+Z)L_?qRK`F+F#QDx})31 zP#Gyj-x@Px@9fq~d`QlnqGX0!UH!VEo_zKA4-6?$69PnMV57-lWcqu}He$+CQ)UCv z#gTlOxB!ljv&j6pcV#BLwCI4DyCDv{olT8vR&C|^!%Cgf9N-h<+p#V+dX6)qZ6Qi#b>F0PeVRmbLpU32K4QbjV9ckOJJeN5$|a`)v; zBBynS_tVC%?cXj#D@6qrbzLOubBE;a81fTJOX8JtS6x~QvyzqFrpGMX5zsT?(?aZ$ z$jKEILn#hwXrpALpjyTXVT&M{6aWQM$rAsC%6XAirGnw&@+=Dy6Kl?MJuz^c>k(Jt z?{Zb!bTFH8rAIbm?b45(j~|kyrhm#<|Cs6X(W%{{jjf%vIQ#L0*Es|8u*o0OW}fXq z#qBRH=MW=mIV++!C+JWauEN}_kO=D(m&dELYxP=8uIc=wt?`YjvwDX1DZ-s`0<2GD z7MGJ+j_&2e1kCIwOFc?<-wh88BYOKSOq!I;4^ESizNot(6>CdWIO~iv;jF<~vNVKU zLsunR_fD93*p>-*H;@KE+};9IjZDHiwNleuY((Lq4}Sz^fi7^gVrG8P|F*;p>sDH; zv*@n^dcaf1#9#NLDLbv>j!K79o(-94=DASpcIF@z#!{tT14B~CG}{#8pcRyf5Vs(> z2EH5>Iu=eZ!jm6V7YRBGxYv+fPDKY0-VGLc2!X8;sDzfNwJYku4zbf>(4Xr(Jl5k|EG6<2(O5ai=QC_ zpiHDr?H4>+>frQw9dP11gxs%$8LQ$s)~uxyk9kO(`K?Nd4oK>h&v%_k544q`UkBV0 z%VYQ{Nt{(Js!pg#$H%seiB&lYmHeG}I6{?|+4)J5>r!%RaLPu8v-;d*7h>(`i=#4Z zJX^*Bzer>fktd>4wF5wU8b0c3bK!f#+_+eX>nwcpZ<|G4bmet~8db z7#Eg0m}>T4@CPfU0;FHezvYZDM{AGGAXW-JI0}}`p8KxbsCcke?Hd?Xx zl<#^cY9Bu6ymu0OSdR0VhRDkiQ$I|C_K|~D%t;t1V)!%)D+OZQ2dFSxAcHFpy=1E+ zuz4Ig&gYNen>&750kosg!}*6hXu~5@RBr|}Pth|>>0s(7eaJ<80O#lZe;oMSyrEwO z;;BEgN2G#BLF^t!JZ|a>#UH<3@><13d}30iVZZ=b@E*<{iOn}Gw1Q`;$t^G@vY4{D z?I|Xd)L0=X=8IWU)bW-3i%afWS=A?eT(V zA6)V;16>hj%_45Zm+wvxe6nA&oTR3Gtwd*>` z_fn4UBOe97uOg13Qow}$p*;@Hbmgor@v6mG{;gqhnNC<^6dP$HoVJ7Ps)d_UrV@fsISxr~bi}DiD;zB|d3M zGvCG|Iqed(hUYRKi*Lrpvq)mMR5jV`F$<|80`D&Iug8p~1rBctye6z|a&cwoCSji5 zrIAb(E+vF zjauDIn)75DL6PpE{lt+cfuDw@N1xf<+@398ohp{y7dkG)ylh;Z(d8gW4Tavs{9xj@ z2Fj5n-)ZIA`;PhJg$VcAs9$bs6bAqW)i9;PmA>>V>fKrc{ZJBu2!WOfC#u*bj%$Qp zE1y~x?S3=$-O&~Xo{5jhra`2lGZMV-y3w+D_Z<`{ucW&(@V3Q(2NtyBDs56rm$)N%|BG}(Q#%!2}-U5{wBJmQqMyYIff+q8bwpC2p zf(@}kvvC1uPoIT>B@y}0b{=&HzkdZ|i5oh-sq9D|yBO%r4?7aW0r}@}jG*gdB+N4< zmFb0R)uW?zCq&MfSD$;j?N!^gh&`oN@q>OTWSVZXU!eXq->I3gNA0EbY(sAZ#3>$O z)Pe_P;Xf}7gU$n`B4|$LucA;dqxqmH^jFYk}6o@zh@Mf(M*}$ zjLh}doc>)ARDbp}%~qpz_OK7RqnI?T5HAb2oj#x*h|SHvo_%O9x(sLl9ChL!j(Tuo zWhx|QG*m(nc036fK6jh&FsVeK$umm(P&5DtM;8@D6|kLOga#|6TSX|p|d|Y zTZAFG4sH$mz)-s(L^;N=DWBa)H?v!B=6@}s=NMAV+LUXjqhAHL@qAsWIGW}7EV-Tl z&x?Nd>h$1|Kin-S@>$V1m0U4vi(Yt7?bYKhc;4S5b?GYRSFMd(3H%@PKSX2mVvZoH zfDENMc8*%Y7Z~8ph7~g^=U-|SIpG}!2QchPC?Rt3##S^3OS9I*SQaS>htnBX# zo5c6l*ummko^^GiG^h<{)sHP4I<1iJG=Jauj^Yz*_Bk60%0z_XQ)~Iclj%5LKb$ah z1HALyygZ57>pZyVv`{gN-b~$wWL6+#Biy_)S2^3L9nUFn(2D+^{smGh7xhy)O9LXV z=iVU>WKSwzMu=-bZB-Ud2DIp*l0$aVdOq{W1DTPWGD2 zz7%D*lrILJC8%cZ8SafN3`%JzNlOB`XQ40|ZA68RIE~hFJg*egptR2kQ)oW*FU`dO&gkhc&GcFZ zkz~C%k-9JMjriW`qtp@(bAQnN+pW!)rivEGH*$&TanM+VZ?p%u!ZF{oU!Ms-4~AV} zpf7(70RCws(V5=Og2Cb)!>*&{DcBOegsgCdL4;(JIG^avk zWFt_*sKcjgCoUqXv1GvoS&VbARYRF#*74T4Snfg3i+HOv$ zcVI_)>o1pV2_@thJ>Gpa(rRm7I82TC)m+!F!p4Ys{?Pe}>YBNC#agv~_77F9XvBr~ zGPF|*{M0K>>adGr{}&thcD+e=!ZH1_9atl6s{Q>h^-RZn~y; zWtu#_uO+xA4&coI*n{yiYbu%K2TSF1h9b*$wrtO&eSe&cOHcH6uAE<7r#3%x@!d5X zDi*gjf96I(PO3th5E8h6TE)#48JC7zIo-8>E$Xw8Zn)wW#2SyW3; zzV4MfZibv>Ui^v2^UBu~WwvKz=vE>bdm0M^gB{79{qr9UOr@sh-Rov*y1~;DLn@H5 z*c(5KX2z3mP5Z9B7#mm4@q4g6;q|jFagwTktLdv3%R5y_W&1ZyN>}uW)b0$fygOWZ zzA~7_FI8df)5x8L1@jGnurqOOq!iD|lK`)<`Z}<~(payJhJwHlrgx zT47y!um`^l<>0x#E27}k-qq*sUo;YZb_ua~`P5CyUz)QxQQh zao!&eEVh_09yBe(5v1cxD!_A`uzJOcxhM($T|yCX5&^r2W6x{%W5_aJ3N9zYO0HwD zojf*0P5{Jk6a<@GLLGV!FW1CVEB3Z)PxDR&Mk>kjxi!4B-%j3~#)~iQ@-ipg%5#gEM~K zc55SCh#1-Nci%5$HYOu$<{u($v=|e66HtQn&|bdxl~ZKbgSN5jFw~52|E)Q04x>f~ z1a`4#5$-4OtLVMk-<@;_W8I4#pU!a0NPO$(MPwhmh$D4^zH#N1ONh}YKFU0vX>up~ zkS-_hZa{zV9f?=u@Gm!gitU{|q>g-De)>=QsZcY52+#1INV^@zZ&)}leZPwJkBuv8 zs?}O_v+ggpBhEDw91+hvR1NI&$1$SVwP1d+q6ZKa;|2!pw$Dr0MDfVDdl&r9Gb;rm zNB(OY!QAe~0l$PaL&)-d>(S2=!$}QTyX3JQE0j`{hGOMzvXQTC6-njL#}84n0KOg_@;mvO-OOPTTm3QUPwV*MVH&|fhma!gG*zzJ-N}4z zWUvE?rPZr5g%H^!sg*B9OV1+C)*Nx=wXzx6;_ZH;D{eEIaOGHt3ABA??2M{9`Kuk> z&VWHiFQhlF&Q#JHg1o}KxYevo_h@xDRJ#B&DPMh@90xV<+V(2@Y0NF}w;wxZ#wNLu zqEO%m;fZCE>R>(zV@ixzi;~`tbY_`%*NpKZbMhBt_^F(Q4s|By8 zGnzG%dj?wx0PmZo8hQPqwiCQ+YgemGISyXjzSXD2w5)^zUol%7Zbo>Jur??!Vs>0W zy%$`6o;&30^JS$^LL=l(AWlXz#rQVYnNKPnLsc_m7d_savMk%n1@pWDgT_7UqLQBK zIH>Z4itpJ?q;^JZ8Z7e6=s+wj9$l4#F!#y!n~4JGgT%u~6^!nT zgO~rR;cuP>C;v*;F#+!*VZ>*T1mE#``XO&|VgO;}RW^ z!|{AZ$nJ@qZ))}V^B(wenGSi2jxS2D5bx4^;-nPT7B0(WyI`epLs;P2y!pY{f-$UK_MCe*E z#hLs4sg=>%W*l_wF};r&II;uvy8?8bYj=^C%-LA{3ywGFqkvI|T^UE-e^c;Y96{62=6bCWdbQ~2&M)^SHFaU0M`I88^|9ZMgT(@2a(ZC05igH8h`)+ zyanjdA%F1aU(RuG5D9es@9*q%^@XgOK_IE5{dr403bVH(e+43Pi5j zi+CQKD4Pprxtx5wV)xKa-6{x6!rT4V=%Mt+mDKF967rq}(FV5H+ND&$7T1oR z-S0vRR9w`eP#=^IH`SG^;J8*E#2r@Sr-0TFZzP$OPYoOJr zaw)v)nTpQXo+uZdCu3EowQD?U2*XhQ z;vV6eR7Y)e#Uupl7I9e3`1th@D6opxZ_A{-ZiwSAQ^KbS1r8=pviIk>r}MQV(Zy@1 z$vcEpQqsfj0%*2LOq%`cLG0p+`o&|Po%03EjOIRMI@dkHuh$jEzAzYBofA&;IQFQ& z1dAK-OJ9&ym3iZ)$i3yte5fNH3<3^;McSHFA!8_C>sr_lWbS_Qq~S?cKhs+3d`WFp zp%r&X(cX~^uWB||`%%&9$FteGZ{W443chB<)r>B*Uh~q2w16pJd-1I2S;4o3cNNhKUuzd0 zLdNEmD;Gtnd)-B8<^hcl;&|p=knw3;g!^;cA&c}}Yl}|XQh?M~o9N3cb=hr3lvzO{ zn{ESVMv3cf04a%pc)E|h_w~U0UUVIXwJoJeMmTR8@;g($MY$e|3o1<|Dey{j*wU9# zX)MYOTnVyOJ(-pz9R^lo?t%;aE^QiSvh)7H`vG3)z`p@s2GS=G9Du?P81g@9Mnyp# z>HNcQ5#n8S#`;J7PdWF1HtP)30#$!&O$kgc^G)v%i#Zkd2(IZu>~@&70=W2IsSF z)|MP2Y6L)ocIO7)Iz35>*#k}@6m~*QV+ekXAf|GdhuJ1iy{3!;MnrI^vEKlqrUtIW zT$l567S!RVpESzbQ}F}{v~~$<2?h)W-cA8tmH|i_5MVFp|3Sk{%{k+yBQMveDv&8o zsqXYcpcKCWgQl>Tcd}vvI9{^8+(k!R1q@LbU$tQh`DL_URTYi=u?5ck3WfeGvH8~ zK?oUQ#+sc8IIGuh{Tc|>%DBf)WoHh7{Ld8{KB!Dw5{w6a@2>d7gFqdkZ$0e#+@})e zXTclJd%E5LrYNYg#lkV3rH{Ve8u$YZ0~Kd13-3IxeTO!{$>z3pO|2Wsi+rgg=HxAMd zKwKX1o{TId#Bf`HI{>oML37GZg4dHqpPhG$(|f(+RH{Uu*)z}fk)d7`{FxRmsm6hV zGpyp5Ll%zLQViRMD~8-nN*hbFr<0RfySk15T1E`HL$((QSF{}R?32CZ+?A=LL7Tb| zKU(5dv0Vc|(g13I|MS(>x7F*!thU!>kL}xf_;$?3r8l-l+lJGJ3Sp%lFja-5%0wur zZs!U(@!D?ZLxMXN=eHTy#l1$W8Zt*O6S}H9K|d(V1iZjiSQN=`$9f2ziWh1lIN$}S zp_A~+XGD*XO=VwwoH^Zm$K$iFh7xwFt&}t-jV;KP(M|Z^S)7FRA?(?jdidd-tE!#2 zdx?~JwBbtsmo5~k1z}TTWp<_8(x|iiLGq2p;z6h30k2G%!npO%BRI2Gl97UF@}QHR zPc;AvhZP#uE}sGxaP2mCNZ`&tvPxQD0or<&!WCz3Qc*7BatG_{fx8qz?0Pg_1x=7u)GA7U)2G-s9bl6-t6U++*hauBHn$_5`a0jq8tzNP1bgQ^LJZM<*gojX z$l6vQa$<*Fw|kreTgDg6+LN-!g_ujZE&4T9p?rvLz!!D!+s>@Y*BX$#@8@20&1}>7`8P-KyAt!9Wc3cK9Ow>}9{!BWB3j zNNKvA+G161PtG~BpS`KAm!t!PMoCr8I-sKF*?E3zOVGMD1D&i90r@c>duTTDz#U77t1bzDGgSo5hKE}e8{ z10G=w0y4&f(v;#LhC8p6w;^F~b7Sq+vhqwcsR&cuNQYThOhuQv00}pKwMr4l`?K=I zh-udbUSg(M`&@g}q$X*-uLU9V)U~y$&`*e|z+4iBf>`F8-ogGhNo!Ds%b|`~D*m__ zL^VaCOpTH=YK>xpatW$lQotk2yISkH<7EIhYp&bKw)LW%y-qphWOWtro@#cfj=N)Z zzY?KphHeSJ>x~|3mXYeY{h*nY8Mo9&p(iE^!sQ*pYvVL1v@oslGh;MVLQUiP=AyMA zPwB&vW$D|i4czDjR9{j|Kl z`i1|_ZD1!vH6t`b#aCK#Y|J8_U~B1@b+b*NGefwBsxsf;#VHnUZwaEUNncTw&qtEA ziL>YhFsLKUMz9iXWigl)HJ{KPrg&;B`Ilo>x%(P>jHhSmx}qb|cSs*TwBlpddI}#@ zTI%&201N^^SXVYU{2zvUfIj{oWC2A03etBS1Q}&_Fp%)|)U8xE<{C+&c``ZEY>z_{*C9hNPdspXb%mhGBUI?O&9v^sPlS9&1pA*YFU6^nbfEoYZ$DcMz Z2e+8J@*eW#9AXT)rLLovt77r|zW{gi2GIZj