From d42043c36c9e52b052958f3ce41571e98c4259bf Mon Sep 17 00:00:00 2001 From: John Webb Date: Thu, 31 Jul 2014 13:27:12 -0500 Subject: [PATCH] Updated uml diagrams for structural patterns --- Structural/Adapter/uml/Adapter.uml | 41 ++ Structural/Adapter/uml/uml.png | Bin 20029 -> 13396 bytes Structural/Adapter/uml/uml.svg | 449 ++++++++++++++++- Structural/Adapter/uml/uml.txt | 33 -- Structural/Bridge/uml/Bridge.uml | 50 ++ Structural/Bridge/uml/uml.png | Bin 21131 -> 15981 bytes Structural/Bridge/uml/uml.svg | 452 +++++++++++++++++- Structural/Bridge/uml/uml.txt | 35 -- Structural/Composite/uml/Composite.uml | 42 ++ Structural/Composite/uml/uml.png | Bin 12745 -> 8172 bytes Structural/Composite/uml/uml.svg | 295 +++++++++++- Structural/DataMapper/uml/DataMapper.uml | 23 + Structural/DataMapper/uml/uml.png | Bin 14730 -> 10553 bytes Structural/DataMapper/uml/uml.svg | 414 +++++++++++++++- Structural/DataMapper/uml/uml.txt | 24 - Structural/Decorator/uml/Decorator.uml | 51 ++ Structural/Decorator/uml/uml.png | Bin 17063 -> 11534 bytes Structural/Decorator/uml/uml.svg | 370 +++++++++++++- Structural/Decorator/uml/uml.txt | 29 -- .../uml/DependencyInjection.uml | 38 ++ Structural/DependencyInjection/uml/uml.png | Bin 18347 -> 12816 bytes Structural/DependencyInjection/uml/uml.svg | 433 ++++++++++++++++- Structural/DependencyInjection/uml/uml.txt | 28 -- Structural/Facade/uml/Facade.uml | 24 + Structural/Facade/uml/uml.png | Bin 11877 -> 8579 bytes Structural/Facade/uml/uml.svg | 350 +++++++++++++- Structural/Facade/uml/uml.txt | 20 - .../FluentInterface/uml/FluentInterface.uml | 22 + Structural/FluentInterface/uml/uml.png | Bin 6099 -> 4974 bytes Structural/FluentInterface/uml/uml.svg | 202 +++++++- Structural/FluentInterface/uml/uml.txt | 13 - Structural/Proxy/uml/Proxy.uml | 28 ++ Structural/Proxy/uml/uml.png | Bin 10913 -> 7509 bytes Structural/Proxy/uml/uml.svg | 282 ++++++++++- Structural/Proxy/uml/uml.txt | 18 - Structural/Registry/uml/Registry.uml | 22 + Structural/Registry/uml/uml.png | Bin 5252 -> 4658 bytes Structural/Registry/uml/uml.svg | 153 +++++- Structural/Registry/uml/uml.txt | 9 - 39 files changed, 3731 insertions(+), 219 deletions(-) create mode 100644 Structural/Adapter/uml/Adapter.uml delete mode 100644 Structural/Adapter/uml/uml.txt create mode 100644 Structural/Bridge/uml/Bridge.uml delete mode 100644 Structural/Bridge/uml/uml.txt create mode 100644 Structural/Composite/uml/Composite.uml create mode 100644 Structural/DataMapper/uml/DataMapper.uml delete mode 100644 Structural/DataMapper/uml/uml.txt create mode 100644 Structural/Decorator/uml/Decorator.uml delete mode 100644 Structural/Decorator/uml/uml.txt create mode 100644 Structural/DependencyInjection/uml/DependencyInjection.uml delete mode 100644 Structural/DependencyInjection/uml/uml.txt create mode 100644 Structural/Facade/uml/Facade.uml delete mode 100644 Structural/Facade/uml/uml.txt create mode 100644 Structural/FluentInterface/uml/FluentInterface.uml delete mode 100644 Structural/FluentInterface/uml/uml.txt create mode 100644 Structural/Proxy/uml/Proxy.uml delete mode 100644 Structural/Proxy/uml/uml.txt create mode 100644 Structural/Registry/uml/Registry.uml delete mode 100644 Structural/Registry/uml/uml.txt diff --git a/Structural/Adapter/uml/Adapter.uml b/Structural/Adapter/uml/Adapter.uml new file mode 100644 index 0000000..dec7779 --- /dev/null +++ b/Structural/Adapter/uml/Adapter.uml @@ -0,0 +1,41 @@ + + + PHP + \DesignPatterns\Structural\Adapter\Book + + \DesignPatterns\Structural\Adapter\EBookAdapter + \DesignPatterns\Structural\Adapter\Book + \DesignPatterns\Structural\Adapter\Kindle + \DesignPatterns\Structural\Adapter\EBookInterface + \DesignPatterns\Structural\Adapter\PaperBookInterface + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Adapter/uml/uml.png b/Structural/Adapter/uml/uml.png index 4c90342aeb070e6153afe78af58a05d14221c544..b653077f56c497e8c68baae5957bbb4db5c49f6b 100644 GIT binary patch literal 13396 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 literal 20029 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 diff --git a/Structural/Adapter/uml/uml.svg b/Structural/Adapter/uml/uml.svg index 04259f1..189c56f 100644 --- a/Structural/Adapter/uml/uml.svg +++ b/Structural/Adapter/uml/uml.svg @@ -1 +1,448 @@ -PaperBookInterfaceturnPage()open()EBookInterfacepressNext()pressStart()Bookopen()turnPage()KindlepressNext()pressStart()EBookAdaptereBook : EBookInterface__construct(ebook : EBookInterface)open()turnPage() \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + open() + + + + + + + + + + turnPage() + + + + + + + + + + + + + Book + + + Book + + + + + + + + + + + + + + + + + + + eBook + + + + + + + + + + + + + __construct(ebook) + + + + + + + + + + + + + open() + + + + + + + + + + turnPage() + + + + + + + + + + + + + EBookAdapter + + + EBookAdapter + + + + + + + + + + + + + + + + + + + pressNext() + + + + + + + + + + pressStart() + + + + + + + + + + + + + Kindle + + + Kindle + + + + + + + + + + + + + + + + + + + pressNext() + + + + + + + + + + pressStart() + + + + + + + + + + + + + EBookInterface + + + EBookInterface + + + + + + + + + + + + + + + + + + + turnPage() + + + + + + + + + + open() + + + + + + + + + + + + + PaperBookInterface + + + PaperBookInterface + + + + + + + + + + + + + diff --git a/Structural/Adapter/uml/uml.txt b/Structural/Adapter/uml/uml.txt deleted file mode 100644 index 00aec7d..0000000 --- a/Structural/Adapter/uml/uml.txt +++ /dev/null @@ -1,33 +0,0 @@ -@startuml -interface PaperBookInterface { - +turnPage() - +open() -} - -interface EBookInterface { - +pressNext() - +pressStart() -} - -class Book { - +open() - +turnPage() -} - -class Kindle { - +pressNext() - +pressStart() -} - -class EBookAdapter { - #eBook : EBookInterface - +__construct(ebook : EBookInterface) - +open() - +turnPage() -} - -PaperBookInterface <|.. Book -PaperBookInterface <|.. EBookAdapter -EBookInterface <|.. Kindle -EBookAdapter o-- EBookInterface -@enduml \ No newline at end of file diff --git a/Structural/Bridge/uml/Bridge.uml b/Structural/Bridge/uml/Bridge.uml new file mode 100644 index 0000000..13fa058 --- /dev/null +++ b/Structural/Bridge/uml/Bridge.uml @@ -0,0 +1,50 @@ + + + PHP + \DesignPatterns\Structural\Bridge\Vehicle + + \DesignPatterns\Structural\Bridge\Workshop + \DesignPatterns\Structural\Bridge\Car + \DesignPatterns\Structural\Bridge\Produce + \DesignPatterns\Structural\Bridge\Motorcycle + \DesignPatterns\Structural\Bridge\Assemble + \DesignPatterns\Structural\Bridge\Vehicle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Bridge/uml/uml.png b/Structural/Bridge/uml/uml.png index ace71af32ec92aa81d83011be5ee0eb008cebfb0..30f78d1e36dfc437b9811d847a6a323d9c6cc3a0 100644 GIT binary patch literal 15981 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 ZqL8~Tl$_PiR?&bzX>kRyyl1by{}27wzE}VN literal 21131 zcmaI81z42b_bxmN2!eznA}HM;pi)XB-5`yGAYFpQ&?t(43KG&?(%lT9ba%smbkEQO z3~~1O{^EbW@0=soC3DR)^E`X6z2aVL-HTu~6AiNq;*~1ymj=jGq-So$eKHtzcX<$H={N6ptW*waTMg{cC<5baB;P_<8prM z`tFUn#oKq5=3EZuE`pX?4N(V(+}o*=tpFJd@s2f`gp&poNRUV zHmNlo0qlG@TA=Xib~-j`P2Zmdtm%fKr7Q$< z5d@-EE-xja={~)agsZD5JM)?ENpNYpDM5~=G!y?_uWj{fZT_YbPmU))GEMqZ4zUK6 zzV{DEr}r^Ymm*OM*NWFQmAu7#n79DH_8y80-nZ$4MKWEW zky~NHp7*wJ!Ds(j2C|5EPGoo`NSszqQBhG-{{X|aBEbWCPW zEL5!2H?X*v`+EliIypKzIw~sQ%}vPPO^XjTczK*2<;#9YL+`Imc;sC{z0NP_FOZpN zOS3aE_vL}Fd*xz(=AA8qirR`BWi`8C=t&_@507x4wS&{^A82`aNdL2z7hWix;)std zg~t;q>(E40f3aeufLQ9ta*sw#^gYJh&rlT9kr|2D*`XpKApyHdP7eLgLYx|eC{U@l zzh2zvKTvIC>Z##@*QrKv->TMfLlga5TB&Ap4fW@qos2MO`^C7=?F3PeseQpK)d}B= ztD|Dv@12dtrAF7mr~f7Mei+Ncy~BwV*1a!YERl1)Fu(mNOBUoTdF>hXw8!upV`7XH z{vL!H>0Cn&>k)iWQ{H*j$6@}o#z^ETf|B#q@O&SOO0XuL=WP|AhXp~Ti+#~i zS-P+Md{7QSj%goT(m8a5nGo$Cann+~Uly0_8XKMOEd_0ibc89#l#624h0(P4>|Q7y zXMsjVT(&OQcjKC%N9feO=z}VUjF3C+nVuZY%;amZfe8%5zxqgbVqXvhU@)&$B-H-KWB*S;qEFMnA$Gk`JwuN z#_zloRVYO7`r?F~{#(1E-Bh>Da-J4XP2dF@NL^aJy;$Hq@T26j%g{xwu$qi{lM!M8L7Bf!ypUvQVLYuy$FPyP{`fZ&YCAf;6 z1wDejc|3rUXwN>{8aY0Dlbp^+Bb-hiHMu`tI8Q_~7iga%dO=#<;CF>uUV6EQ&Dbse%8P>mF-5su(}3V$7Nhzg+wlT< zyMn;o7h1>M!G*tJSdc$J>X4iqXv{mfPr**2py|3B-@V*>@!@oRFiW#fBN}Dp8PIKA zQD_m9fWS|Qk7spt`i%SYud01H%65NjP87Zp;6^^xsc|dZ(J?-Xs8Q20wZ$mk*dc<+ zqnLG2GEu>(vHb}lL`?umJq*`h^hUW+36*V!?FhNjS2|22Q;%P)XDsCke9CW26ymmT z^z!hq$&exR_O7b7&yR~DYr~ff-L`#u74j`0+xt=!>!VviiR^ckiYKO@Hh!>WNNtw; z$=eYEbxe()OOo~o8aeoy`|Rg6$mS~i&AkHh0iLDs*k-PZVv+4V)vii2?Xu~e634!t z8H3D~IJ%=PlzF*@@+a;B zeSNm@?`L(-U0fPj;vd=+p}G1o`#m~D_$8u_ko58MJ}Zq_y}2~Xjs0X*V`EtnPs%N> zxVw6bn`DkEqhsfjg6*oS+_nVXVjFZJn^Jh5Y|NG{tQ}5_j>f*q>Asg7(H?@fnJ9{C z4v34hgt-i%4@XoFk1Crk+`jBKF;?9GUPR3tX%qmn%um)m`3#(Rj)^8WxBShaN|M^* z&CU&;&Y!j$TLk1pDK^Rh(>FdFbXA6>@@Ul+Zyv0bzMVHJ9K{@}qC!M|K1TQcz!%_A zb1>Puhqv*tt*x!^)|8i(?H?RC1z|x(>GH&mkMMY7*HgR|O`9pK1)bL%q$Yw74a|uz z!M1~u6d$b1>Kc6WVDFNlnd zjj6xOmI`rla&mAG1U`d^E7yBjOT0`xJ*O>0PWXkdeE}Z2CcNtK(O*k~y^uQXXr%TQ zAu#I572aw%=Ol0Tp-y?8%B=-5W5GI#!D7|-faHVyHT9B zv$waE4#<}j*}n~Yy}GX^*+V-(VqGM%JYifMfGzEk#0qvW6(aQS9bAcd7ysE%!h1z? z38ISn_HL*VXp;eVsLqi1QVDE_I*6 zf%~x>M-QRce&7_e*t;WdH<^iw^_m&gbcj&2U(k4n;y=}U=esL#GIbXM(QJV^lQL_> z6n@oCC2WGf>FzxiPeKcMSFGSo^zoC@ok$h(7*e zz|S`@r+a(IE7UZe#wn*e&vG0iuEbDD6TY*7Cv=td!hHPW8L5BtD>WrgZUA+V#JdFl z=fC*jN9oGmYxU)%AT|Sy4XfVepQbV|^7%Yw<5_c+%^GeaL1pi|mU1^V7>fKnIT`Cj zJW*6B;$$i`)88v>YiY@#`r2og_ApX)lkA>RezXl{15qdh@v)$W(#Pc?A9BmTGK(66 zWplkEH-X7c*So!)&|HN#89T|D286{qkY^W?@wZxA`vUi??%~01KVMHFK5&76#cdla zMk|Rp{xYK0+1Y}XTdHPk=KZxQ4D{}dYUy7>=X=PS zxY^`Qp*nN0sysOEaIsUZVI{=Dp&+|Pz~8jepY;0ao`b`KWZ~d*%hG~hLQHL_;~jDK z%s|`m-efU9`UEo4`|F1%POUJrXIX49+%)r*wprDv@7sC>lozPMw2;y3)x^WoO;B#L z`9@daWCEaM;%)Wlk10v4C6fE=zl~V_y=nBs7HWVnHg6d|ka(V?PkM~tHfmM(*&liS z{E1=RI_E135#X?+W~QdXc7BGm1PZvW54s(!;@rFU@l~bG<@OW~`$PVMfgJUV_HPt_ zw(UBoBM!LOR_fOO9D*RK3tDY)MuJ@?PH^1>Nwy#xX7SYeOW_K<^z5AO{%HD3AlgJ4ny)t??;OD8?PqLMk_2tW@+c}Ae9$l7Ei9*9ogdJPJQS=z#q*WxRVD~v=~q}O ze4d$rT7IWa`lORO+*0_e$$sRgw2I0%#~u?CF@Q4V;`0uXVZdM_sv;Ya^Cq&$+9e35}$U7d2-Mh)M2p3e1&Lf@T*CO0}HaiS+G ztTR}YDUDu6obQ{Tw+6QW5X4mfRLdR5#@ZS`&e!?icfsz0q-X-mNOkcO52tX;=g%IM zRbA@KpqZJI%F8oy`}z{d)u=wbg}gs=N3DHtXhyAz^qtUF56_gDI{|rwH#c3@wPxXm zX=j(QKdL|893ulB`F))i)cO?ueWz))p7T7g(x?|Uqhu&cOpFN4ecU7zyv=uNQH8-! zM_Ybpht|AaCq3K}0A)}KR@eiLsGe6bInbT#)0%S%~a5kV#7W;NfaoFZyi zduy+GfKmX#QAMJykB*L(dQjruz7O)FY2PsmeU1a}HOj9dob`wo=qk#4BZuNZs z&6wVJa|aun+2Z*aL)fNbz6Ki;OA4iEz3Ngsp`;|L89<{^IBcTZN2^POoSa4LSg*F$ z$?m6D*0d#o7AdJ}*mu7@dZL8~kW|sRBnqg-R6w;@BJ}%rvHm`F?*kb%&N&elmd}e< z02KLy5d90*H1fvy`{Rb23)Cp~HMj^3PF1z%va{6hHNNf|6g%c90~%m8dNEe>eSNs) zca0<@`psZ^t3^>9mW+($#DdWd7&&=+AaV#s)}YIXfPXbsUTId; z0RX$fe&)_}N!4YYR{pAh!%5_A7DYpY#L+a#nVy*MkqPs)&H*7I6qc>__8p}UcAe&Y z7MkVrbp}kCfB{+!rZ#3QJ$17s((dTBQ&UmtU1&*=`HmRC&*F2iv^)Un6CL;7_8KPD zKwcKJ8taF-ba`J2p?x1Um@XksSv$?TPJho2mWSDZjPvf}ydFRJMKccS1D02q26DX5 zajD&-zu#?b0M?gm@3a&Dy|IyB;C8qHANpD(|5Kg;d}9scGPBK-J;_f#Zc5)^q5b4< z+HbukrOG9Ol~L39%}!3f=Qrc+?<=x~*WqY={CkXwq5Ed7I6OMLF3g__iDOJ=Tll50 zT}!?slqdmMfH}s>23X<&{OgxHe7uynHv~D2MRyk4GTw9$8B|z3{l50%GU1h7e8Pi? zR0*HxRcW(*K@o%M{_(+*204X!v8#HytMnTIDeqRkupA)vc~t<;^q~e07BXk3E#v?H z!8Mn)_9I>MEf2W^dR++k<0+0N{EUd>$ zn0}Ggezs;|05N^-ZwgyXOX}z$-#wC}!KT>wef`N8a>-XSPAb~)HB69WQHrdr`xh`D zaZZ^d`~w)Q)_!o%s(08~Pxn@`;86-pBQk${bo4PF-}u;=f`TAh3v8r4T{;q=e3;)= zU3i{u=W zHP%#8V?-a7;TeU@*9TtuDTPdO0&7-w;7wJ(m?o#y{rScQ{Q%)+5Z(Vq1_(r4v-o*~ zC9^vSsQ~I=Butw(5!PAL<3TJ6-h1!qfx`7lVsp=}MZlghV2t25Ovj`D7S}8U_ zZplQF#%qwg9XN+U{+a0X|8Rka%kr7qf>Fa;6E~-(hW=&;M+jnHw{-F1RnL-%n;5S# zJ!hEwFnml%(r5gUvxdf!??vPC)0(EWM{Ydj5?Hv$_d$66^IHUDcL5lLp8@UghGIN# zw-?j{(WlukCn9?3K9DS9hwghIQR$Ad9N;Pm0fE&GVesJ(F{m>HLS+FW%hA^)7udS9 z1FJp#GpcDkjfek^dB)HvSz(4lr(aHPSI}>+Z*o#xRn_)nSCoQcp}@D=;d4i*{S#h0 z8j6kX)BT7DGmiZ5v@|cA>&VrZEP*4Q{cY5|b1v(j^s9uin^ej}{olOmxPVmcEyx^SZ4P6AVY{TnX~pt7t^< zkwY0HS&AM1XzDHk15U=iZSMC%x!Dy)2dy67U$5{!t@uj*J(NnwaVWhDAivYM4yD!( z4h8_T7&p|>i+Utc7rnBywVE_qCd&1@^a#I{Cd3z8=_XTMg|ApA)}t@b!qe{ij1kGw z1Jb)dUy7l!zR+ci=F~%Dcm{fblRG@DNY5Y!v8>X13GXM`T zatWIg`<A>Gjb@C0vP4~CKfGp+MNu^ZG}gXB~~ z1HlVLXf|2&#h;w+q(>ws#tOP_swHT?(64d4g8`dV z4MO`ch9>YzxgL$4)v2uDl{R~-6aYX+bTT!w@P*-Jdt8qn`j}lP{MRRWjDfGh{@QRq zjN|JZ52^6q)P@QZSxClg<;-UFY$*Tj2!JC2)vXsmigQ%z)WB9DHhg&uUiTxuT?6_o z7F1=Ymly-p%iINq=iu$x zAy^hj*L5G0RDG^Tul5lL3-gzIn@E0+754571cwDN58jM@d=pr2aV0B_?|k)I+VhaA z?>w^tONX3Y0;&80G>P$>iVpxb5b>gnipd^6?vCQQbEm#P1y(BO|VUnIzo_K9Nm#l6K=_6@2efWwvXG= z=Buaq_F6;UERK!;p8|c8(f>ctL(|~nZnFSiH&4LHxe_Zpj~;o(f*KC|B>wJgC&&He z+ZgSKAVdGUs2H*p<=HhZqH>m{eyL-_jyC=J=>P%*@P4$}b6^7iohK&kfW0M%%q&jx z(fIh-YX?4j?s3@MY};F4X^~8p%u{aGHM+MHSOP;N39Sj51>Ho=16=*7P#ANJzhDf1 zoe-1Msf7^d^QC@Gzl2)%%Jg(8!jSe4A5?l`RAKIW>yxEeBshE8Y;7p9{QYjn$f!{!%b`g2^R)9NE zq5QuET?~wXwIWt3?H5~3?vQ7f1&W=Q47O%E`(DBpK6wknZm7OD{gkkyxErg@kWH8{+OC;s(wAFpLBkdX=)7#7Cy;(F$IlYOV!uU zu}e4kn{R5dbe9YBq+D4QT^+bsdsvv|SMUZXe-1ZhV(Q}Ow>UlBOHO`uaqhNYsR33U zozwpfT`r4td5{ub+vJn+?6^TPunJ`PnmPng%Dmse$=Aa+-BHsojpkNB)S7J?X!#-g z_lsP1vvG4Bjk2;dh`ELgfLpRv1VO#ZyeE>88E19R0K}Z9ATE))29XI0%^dC6+L>jx zJjD@u_ULRm(i6b=a=SOp9-n%8G=QHmYEntvkG&5?$Qp+0kXxsf1%LjVo&`cX-Z6nj zPil^l!F`%WS){fLaX%>Pe-+5sXMbckHgxK5=cK2HzZQ|jgu~DC;725>^U3bdp$xRf zO}!m}JB0nHdzh3nBSO}c-b)h+@P{!?|; zFHV;T!*K~Oec(Q?mw$6<)gZV?+y(5Xg9@EYBf{^-8h!-1gM*#jFZOSgV*{<32T>eX z34v^j@LJ*KI}Nate1dAV0I8P0)rl5Rbpz$4W@%Rww2}FeN}bDwZclVyP5!Fgi?7?6 zzm`XzBaQUq->nbIyql2?J*ORlIiKEQ^n~u|kUON||4R@$jjVq2ZE^k+xWgjZhE2Fs zURQ2q{mC^;HA^i!EUwovfGVIt$a3B%fwm7j0I=4-b-EG zRN^;ZbgEtZx6%U2)5}R+;^5lOcs|<~KNGhxK{Xai?&lhQk3GTaK5(|~(3P+IBrF&l zgYN~kn4cGG@^ajz2F7UCadcFfA{tWknC#*%3S)U7X`@EtXOr0aR7(CWI*HDMZ*Vkr_zpi_k`3od_^h_YrHknvz zYg_HrJlQnBXzwlH>g!=;^dxvE-i^h@#X7Ekc2<4scGe?X8lS^ma&-8d^qpJf588bD z0=`na5u!4d| z4;MlGc@H6{iRtv!!-mDv*xA^EP4A@)5W9<=Sgq2Pf+v2X|{XP>$nO=A@;6VJ7s z+_cTlzi53v<9l>#jk?h%f^^!V!0{#~eDv%h7EnGQNbyfSX-t?&{AKKIGYR`n!9z>? zy88S`$i=D$UY=_+UGMQBu)`u6%d(RsGLZQ6pUm2iwuidl2|YSdye8}$9|eMV8J^X^ z3OpUB>Hv$v0fG+dJuRqg^y^i%h#NZeE9~f4CDLjh=E}nuXm2{Kr=!C`_q(URUq&&1 z43uuB{6G$k@p*Q3e>Q5P@&}e`4>!%ttR_X-H%VZ+Dg!aRy-&{`jrU)!0{VQcRxS{^X!(kVq-FO*YQ!koy8v2$7=d~|qM`A0RnC6;{_qmhXfu=`2Oit+f2k6Mp zkQ_C4)#W_|==@9_M{y(<>hl?wnhFN@^P0X9=}&T|dfNKQc4xH@V#2}w)bjK4jAfni z#Rp%(d*>Tl!`JB@U9N%Je*6!zdmTiEiO(!&=CjQAVLN$rOG-J5E z+G$P#8Ffls@5Z;^nT}M7)2V@3#RNtM4L<$ub>E)zP#OHhGlm-9Zd9Lkg;quXs7Kd0 z8Q=7RKJ5neQA5KC5TWlKBML-oEuS~Q+=XJesBEXofV)sIZxE{9=6gISucPy|pCQkV#(%Q*`eyA=eKzF0GQ}#_w2M%n}mUih=9!~E#2=e!|2)G6b(`AUU7PBY&0*p- zc&#zSQSCZJ^G3MdlkcIQ?yal_>nMtmguOPuO8K(id!AUL3N3cMu($B^%Emcg}gVz@j*LwmsbTiw=;DJes8aeRDsvQ;y3 zm;V(nYnb?1x8d?2e}7f&Fx2EHKpNR^_jzD*tXw78#Y_jWVYdMK78D*9-rLZ`aq0(u zoE6L(gV8C zd70aY3?IRWA{wzEKjPD8h07u&LOur#dV(EdebVTAl{VJA!{RyV1DpOA6vsIGQTfa{h% ztt!>DNM_PC2rJt_I%$UIjKV8f#_Meh>%Pv zfgQsYy#~o>k+Q&$-9uY<6zT|Z?V4ruTQLDU^?)SRH+@v`F+g zy6S~A^@80|u;AR$>QmHHrek3}w=?dtJ`k>pW@o2ebRXL@JU>b}F7mej3WPdBjD0e( z#r-5nFDeZWeInHwAVILsw9fbeXFQ*u=rH{R4+3GAIesnymT4WQ#1*0^zo#~;-ROOB zZpyBa*%SVr(@Ujbe&G#LZtiXblPZk~GC4U}C5dKiMtkvXE$^h(QlTOQ9C;-~THxu( z?5LZkoI3aK?&Jcuqec?G`$8_Ia{5KHClA05yK9RGfO-eatH`#6=tkF{uzDIBz;gZoU!gH~5*V-b9t~M!DSTy5|EFHbCgYC73d5OMxEMH&m$z9iD zwcDJEqq|KEQKRU_{|bDa3@RZ3${^yf{4_im2|RB#rX}NEj4cis#=wxc{YfAc!Qm*=xQ+?^lpXy#S|M9ZYyv$WIugD{UGa) zvIRd5@0a{uN(_!Edc!7+I%|*j*`NKy1^VaA%%3}!!kLb4kV!O1`ACb%Tma5h+gX@O zSPfsU*$RW#WXW=;Urh86u9T%(r|c~NCSMxS;M?<5xy8(k;E|77$?>gLTmwD6g}q?B zFFC-4;gd%gGfs3C2*eSu_~>Y65iU1jtCfS#_W?M@v1r2s4ENdE_?^jn>BS`ytdzEniBM@y(O~%DXp#S(p8o^P4n!rnSA*bs(P zgV%)H4p359x)f7aup)p8A%{2r`GOjbgT3IxX^ZWYF6ak^HNFj$j5yc_M0>v zhwvrp*L|GXQZaXO`DeV>AYZIEbnEWx3P!CVhs%IloP!6Fu~=iA!S%)J4ef_W6-fpn zWyt&Vy?wVE&ueFhsO7BkMa@!3cX^xI$(X=;Y~z}1CdT%>+x_-RTM1MZoByP8V4sQ8`wBs{|hW{v!kK?-&Y_5*`n!73gZbi53I zdrcYLK2fFi3D$sNwt|v6YI+& zm&k@UlMzWqqzw^w-Gf@|wWqySvd5(f%{&eDuqGbF++Qc$SfqvQ$|!F*h^p>>&wEf5 zZUaWnO3kc0wUiDyam=K_`(y2U;r03!W~nIl>3Lb%7f~*2<;_bVbTpGah5SNClEx^6 zZjS$K!DIU)85wg-+iYbs>@EAy4)cIe5OR36*^bDVXW4NeyO*=4d%7jySL9&8OJ_)BI^vOkD*K_~BH` z&w`TshTx=N28le$McW(}MsxjtY+uptf>uZ`SpQ?!Yoqs`9Rqn4W9ON8n9Kr8_^%ZI zu^byLC3OfsChm5=#Q)23d=Jf^S(4$B6oW`JFR48?p1IC83T^>B+EErGats6lfb{@c zN)veRfAB~!d>aiS>^lD6(-Gh43|16*^O(&wjx@Ro%RFs&0~1YvnYT?bg9l!Dl%Og$ z`?5HE48weBAv}85AoOMr@rlOo@8w%QtGmuh&YKROc6kOAd#e07Aje!9)z^3?6x*kH zQpe2Q#;E~H@yzWSq}lT5ruH%STgz0A_Yo1KF<-LsF@cv>Y2Fa*_7L$ng$#2ML|C$uF&^Q(>Oy=!JD{DtqAb4_K)?|X z_`S#l8Eu2f9+#Z%xcmTD{dT#Gs!CcG2;O_{@4K~UFr=;HrcMLfHn?Ary1PN(f&*bk zz^yfxtbGm7>cj)Ys>+%d0i+IBCxGxRSC6PK2u1_=GDId`c?zr82KrC6gYi;?5Wuq} z1&%J~oF!24HYDc(2t;?*?7nWBeDr=Q?sLL(>R^>n3V_KIzZ(#(V@w&#ba}q#+v9jo zuwR?29K83>q-#BN>>oY`AHdj>8WHe=2bG+fUKGTTGN3Q#CsNpF*Z#S7-EoEz?EJ6m z1i$|}PK+r2z?t>|-V5PFkM0~~Kz&B$$WXdC;!(d2??aXufilR5WB5wvZi4K-&H8-j zcpxb3f`cP6hiGC&tKJY$xsm#!v(mWIDQMe7a-Q<=1~64o(?Blmff<2w>id$%RDn++ z?7x;sZv#ol{k-=6{Ctyw8aQ8?`maERkVQ)M^+^)OhDY^ISPiy~RXB*T>+j3_!rxBA zBAom#c5ixOz3=vfoFOu~oSQEafa(uB`a}^BdfA}a0K8LMt0sP5cEHSo20?z0bUd#` zB<

$&W^^8k;3Y>s|#H9I&9!w{`$YZF-k}fmh>9Jbg{TJfMMM8{Ctnh5iRL=wqCw;w6}Xyea|`pe zs0JY)fy+y@AhtwUNpjoSSSD1K)}JA|fIj92{a| zG??4B5lbm-!w-h3X*trLO|4;f)_tTS^-skQ>;;JI#M@U%N$KUwJ0bD4wY7LsB-m`e zw0DjW3KguEKw@2Ap>zZvf?mc5wh`$StkzOJHp|QFR($CjvRnHYs?`}odLj1U*S$0B z%{W;lW6uO=eZeyvL+mawvt-?-mWhd&j-{cTxPQpw;+dl9juH|}vx!j>?WE_I50v~5 z`!X!JGH4~!ZWv;-+0o{Gl-}!nk?Ps-g-(Mh%6HMRq+i!BWAB6F#0`(y8!Q3X^UJu# z#Dx2<#3eI-=Iu?z(NA(^iGIXn6w}szRsw}YZflA9&>0ro}q+W=zfG6_asSbbatvC;-Zc`U3Y-H#oY?~dpZK{qFWBxa4 zv?umf!dC;vR|_Xp0)tOCeO@Asb%u&=pdaYYiXy%cefk5Z`)Mo;KX>iRBT@1f49yV# zMD*#$BrGN-Q#eG>)paj^mpT&b62>c3zf{xe;ig&iRI!|lh2YxO?sC=^y{DcN6}81P zmEAt}tgT(jEv;K|d31vHEr(LsSvL&UtgGzhCAZfI#f*0jFNW?TLyCw5lU&-e^KZD_ zXILZ8tl(W)ko2`!ohp0E81pMESUfZS_owSGqCVclpATD26F;tma-XZPt52^a$`-`{K#uu?4v%)@5YA&A8dotRb!)2Z3K4{ z@5y$#s<}Jr_eZZ};SD@wsQ95oz0hfMkh(J?S6_5${%=d!srHZxEgQ5EEIg?W5ph~S z_H^SI}adv5d2@{ibQFX%9IPKfBv8_1vm9lFQ?UbnZ` z(RNj7-m?gpPSX|EPXOP4e_vDknME%|tjUl;CRQay^hOF%z0mdWJHZq7i(WS(d6L?7 z*5QSPP1It(onkT6FMVV~HYd`hHCEv~JOiQBaAV1g((rJifZOb+3xNU4+cQ;T+moe| z^73WwID4^@u8$tw5U?H31dJz82(q*5C8DmdxKq&I6-+_fT3@%p>2%fTw6@%8Wn<$Q z(`SV@Ix>Qf|IYX9?!+o!BL@AD_oeZheBE5{^*VJVJH>Z@!Z>C%^ohud8MfgYv%jXMLc6V7Mw~f9@c~qT)-yipE21qNzB0ZgI%4j>-|ti0 z)~S+o&&EnUfQa~Ug}ciz6~+g;dsT1O)Xe)I|UG8uiy3$mO`q8#uXfdGl+!+j)QiclJEh-taT&6_u}YQzWkhL z+n0?B6Vu_izPNC0iD#>fEGg-NPo7*oSOH|3LQwy!B69up9$_}vw&ggNq(a6z3$IzY z`XiA8`by88+m~|G^pIRm)>Q`9Q4aeVKC}JzVpAOR1FHMaA-L{vlcfHpOfAR(e6_s20&)v3vNq=SLLHaJXx=n}uJxk`~ zR6+WQp>-|5W*IL|>A7PjU(iCC<~J02vDe}8@KzoYp3$hs)X4klvO?iWLKSo0)x_{N zhE~TC1L~t6{lVZ{n~<>UR2@(LxDMF!Hh*iM5#1f-^K&=Ar;w4QDSA~6s06=v5n*LP zjYMlYZ%ITtH9Y!WRi+k8W-y10(@bttAz?eQ8EH4}n`mp9qJ>ht%v1zb!@%BuO&H_z*ZJ}Y64 zglmj_#NEkOp*jNWbuel2h2s_hdJ6O>Ze0MzN@kRt0gZBY6`&wR0iQBC<9BdqeHe86 zC+|AoY3n-_939TuSnvnMr)R`@nFjO}*>aSn2*lmlHasFC-gjN2&<*l}PNzQGKV3^n z60DS59CqDX*%{@*y5aH`aCx_4Vghw8o*av?y&`hng{@>8@z?i$`qojZp680WofT^5LN# z<-*^VA27~n3Sc1YV3cC+<5h zqcRZzLtp>0+?M`Ssdl$Gl+T@n6$ zz-`Zk;!aF8psr?U_>BkBJ6nL3$4Rr>KWd}>-AAO~g>nG)=u`%GE=G0d*mW;Rkjr=E zW0=a4<`VS)K&_gFzZs?G4WGI1gYZSj+Mzqcbk6N+_U-*-oSDTV>-kYBDt12&Z) zbiA^>obG7b+6=HUrexnm>gyMR)?1V=y}eJx?tr{I0! zU|;%e&17etV@^COQI6l9H|vN1SpUSdG{+Y4mMrBSrO4_7=|(+54^&MJ!-?4foFf@{ zPJO0@Q-rj1u-$Rg*B(mH-{k1pWnxNN_AQ^Qb;d~&eJ8ep7bEwI#*hu^@b;>&IUsV` zz^zd201h;Y;sBm?l+e1e({z4Ev)Tb3!+lkX1|&n0W5lDEcL6of0q$>C_aDhhWZ}ri zaIS{?5R+neIVYGrMU*mFa2)w0(YZs{v2aM;2KN7OTqApcvi)r~8+F0F7bXZS!^2`( zHJ>rjlKJsqt`0ZDLK5|pW|xiO+~tj_eWEhY?QEL8JJwqnD|-mgerD%Z?duE4&>_Z~ zD-otCADqclpK3oDb-*I-g<`m(BrUY{o)92^zuV$Q5 ze9vxr{8z5~L0)4Pr*SGv+@}xmYnfaNM7+)+P37kPM|ZweVv-kz*iRIpLQAE_n?F9h zI(Iill^e3){iKT(S6GKLtwCdi3L|!h?EnQAeOyR7XU$z~51Q0I$B*=1!77uJqti^h z__2};lI4Ocj)wN#p=Gf$GJ=OvU_fP7`T{@3kVD%SdK$SX-;Ly&fhoS4L#$RUfElK6 zTNVN?Z#cZeQpmLu47=2N@LS3(HoFC5++G867K(KcgoxzwZF=5*C1<6;nn35wylZvX z&S~kTns#LxDgjiY2^S6F^2(^$X{;CixYhqxWfT8Ig!}kf4!Z|AtADWHy2% z<+?)t+Y7XwqCq_8^TOey!SW0{G7sx2e_1yQ+l4Gw_g`UgPa?_FKyLDa1Z-O(43JER z{WC${FgFE#9&Hi1#JE(ntypd=P^M$Uc@E=1NLt7cC1ssZfoW_B5_(~5i9uWxqE}f) z^^{+HLdhF}ZhFT~HAOS-QI8K$=~1T&6>Ds5qUCG4JyFMI=UFU5PSe7BY|?=f^-#Z( zi8!OX{bX)^ zouNk39pD;94%b0-i5}4JvHv+b_87|>r||Fq$SJsOGsw=tPG7o1@$~S*<_&QUS3_t8 z1P~W9Q-9g^E2v_ICT}08wvNUf=yq`vmx#w5y#^s;UH2UjS!fU=t=Vd6fCt#wAG%5{ z>ih5-$U;AXpG?mWc$kNXM;*X8;9+`3$@+$zKccdF69hh_M>ICN0SL-*zW6m7muRwl zhfPDKt+l3S#3GWJ&=0*ci=GIV1=DtVulx!N;dOpj4n{^Zb4?O^R0(`Nv!kOm#!cKX zx3S{rBvlnrFs+jUh&Z1=Bcil%QfBtvE;Jw0U zVx;8naILNJzOWAG4Zvdx%eFlJnUTnA?kB*W1970iM@Wq^wdtzAhx+Lr+h}jLxPGZ=T~ZPu zO2+C$rx)+L_@`pXb)e;#c@j^pqR<`h*Q@7Yl{0Uud4_VPj{X$nH84;majy&MX-7BT zU~&7svA?o(S8e^%4485Fieq8%5in-J9~R*Cbn#f|y>rAS|h1lh@ zD=^?QRh%{K7VG88HOC2t-3i<8K#k5tz^nrOG$>FsH~WIAoIm=n)2ppbp2W7J$+<7% zXkiw8+x9cjgP*}HJm4ZVIklwFbGHqGVIuZzVHk;A(x3I30#B&XF;Jc~3(0l_~JY3Z&>h za@77aZDBu>Ds60sAHMydzkd|WQ;gIKJyi1cLcZE0e^eTLRZZ(q#NtHTS7dgn0IGPY0GSWc_0}1r4sYSBTs1k*RIjh zWgu_XRQCS)s1jsnfnKP&h8P0!SzMxR3FMDszyCQrroNJ7sYA$C5=z1IzBa^W%415B zSu}w108B>@hs-vzsc5lf(Nn4pYM&o)UhA9Pnvjt8({aVGvy?_C_XC%R0s+^Fm+p~aeI(54WTWn>us;8|Ef!?-05DGzRW-F^gIy^t7Gbhwp`Z@fHU{{q!P3{d+20@* z_89DYnY07l7xxR%fW7KGk0k+)2o>tN;AJ^?+fme|Uws2ZvKr1ss63ODMj zGTXIQ!_*ZoYxi>@nVfawdoSNs!2&!Ur^e+(`mu@kt ziJ*w>P^@LfWS^~R^~1FfObwUSW{@WnAM2;o*WjEMN5oAvboP&1FDnF&JsmE-)~2i^ z)(f}o>f0z&0!opBh(tu9eIGT*itepJ zPr#uvkthTQ?U-*_j9E6ZL%zY3zVnP)%JjK8e0ts5JUdr9^#!=rWlx}avvXxXO<*Bh zzadQnz3TtCoJCHs<+P^j4Gc7}ZyX<3$(UF?^B&T%<8E~ixD!G0tI6%Y^XyfnOO|G7 zduJ-iuFS@%znkq2Q!+ZT4$>`ynzh(v)mWld8Hn|v6Qf7@LElKaG!7&KfFnH*q_y%| z$y3#jEI2n-v;yF~yQrWNZV$J_xB>pUyK#P!=?xe)ybl=}WE}||EIk&Pxc|IR)njSR z+}?rvQ!Y=+rbdtnd3iri*kTEm$7|obaO|}js^3zPy?IBRusbgVh()((v$X-O!%A|y(QW8*XO7`(+Q z=%U4x%QMqjLG>6Z3&zbQ)E~I~uJrL+M81F{VL0^Lp|kI&Ay8WsQ9vjnnzC@O-~6K4 zScN%E*ZY#7%b*H4c_lT}CNz{!FxPpQF~dAIH7$h_s;fE?bhB|1+7d{z>*PbKWaGBV@_1Z89n;mIQ0jznp~IXOuk_g>t&4@^^6&)!UXB_zuIdGS!NSaP zqrlyGsJsZDVVT)?zGia&kR}oACmPK7)TCX~BKzgFQI}&$C&O&vvvSt>(gcDksXY~4j>QmHeSoDRB)5{g-NjF_d+>nzS zGni98FxOTC@^iXlbU2ZZN=0&fNmT;b-)}~;h($=I&lN-0wXt!B4u#TFQDg(wZNpcs zQT~MO@2K^i_nd9sFZ2NF$;TJc;obr;$x!8)^3uWQ6cKZv>5f1EY=4W@~JEc zkPfWhNntqK+Th$5(J%W010S+jei9a){>)8&=b+z81&MSs{ZDTnpW?d=EOa?ww{WGN zd0jm{y#noRWaRH-y`-#+LXTx4@i1Ff$^^*t_?ES`whQcqbS4$0>pyhL*7nn_0BAs@ zX1Mh0!sPaQht^S*;PvnYBmwuP@XS`BHR+D!un#Yy%T3Rj;j}1@7vDQ4D11+!l!VV1 zanjuFdq|8o)wk!n5$O7nZ7mjWpQr9TDLdGo-LqH=RSh66g#-`ENU8P`+do`kfkT?# z$@A^T5Pd(#;UAIdwTCxc5(&UdY}wX$^S~1&W}<66<^WCy zCh{)a%eCE<>|dnt2zaXyi3;nF^AdXdp6mPlEb@v&+f?+#ss$ZbEK_HvO_&5wtl8Jk z1O`f^1{vYVME5m2GLp*c$Tcr(>xEsh&Il3U^ZzjZ$G;>T&nQyz$h(*5`1W*j<*Db496$1Jyo4R=-8#yJ1Pou zuO6sJV;^(16ZFYK4&oh3v ziM6%yX;AOj`rcm@3G|AyTVy}`rpp;rU0qDy%@X@5`STzJ8MUOANr+3m{f{>|l=h-4 z&7V#*KZMVkinv$#!-m%#fg-1D3i~5NcGdjdSbS7NMCGRd?Y=ignt#d!Bn5kI%7M5W zXtII~E<4i{zI9+=;JDm@?c1a&7fAzmQ}Tg~|DtH;X*9bR$0c zpRqD>9WBC^B0ti|Y1>yvA}E-h%GIi8K}*#b#_LqOXYOIxoXzpYbffN*B_&-656ty+ zkP#tqR&B2T8eHa>0%GcGB(&$*J9i~Kb}24gSzCL?R9=EIF(u9PkiO8RH?hA+IP5O8WcgC&a`O&g%BS413htVGn|TVt zxqgXLQR$y0d15slfvZcH>#mqH{|~@%H9TNKR7ODGEyjic8(tn7-zJ_@sob2(Uf#<{ zkVipuACH+XH-Gr|09+#om?Ag)kA0^6_ci|BT_+2D<>vq`;o&)P)aD5J&^i2HGlvM4 diff --git a/Structural/Bridge/uml/uml.svg b/Structural/Bridge/uml/uml.svg index e7b8e4a..8d27913 100644 --- a/Structural/Bridge/uml/uml.svg +++ b/Structural/Bridge/uml/uml.svg @@ -1 +1,451 @@ -Assemblework()Car__construct(Workshop $workShop1, Workshop $workShop2)manufacture()Motorcycle__construct(Workshop $workShop1, Workshop $workShop2)manufacture()Producework()VehicleworkShop1workShop2__construct()manufacture()Workshopwork() \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + work() + + + + + + + + + + + + + Workshop + + + Workshop + + + + + + + + + + + + + + + + + + + __construct(workShop1, workShop2) + + + + + + + + + + + + + manufacture() + + + + + + + + + + + + + Car + + + Car + + + + + + + + + + + + + + + + + + + work() + + + + + + + + + + + + + Produce + + + Produce + + + + + + + + + + + + + + + + + + + __construct(workShop1, workShop2) + + + + + + + + + + + + + manufacture() + + + + + + + + + + + + + Motorcycle + + + Motorcycle + + + + + + + + + + + + + + + + + + + work() + + + + + + + + + + + + + Assemble + + + Assemble + + + + + + + + + + + + + + + + + + + workShop1 + + + + + + + + + + workShop2 + + + + + + + + + + + + + __construct(workShop1, workShop2) + + + + + + + + + + + + + manufacture() + + + + + + + + + + + + + Vehicle + + + Vehicle + + + + + + + + + + + + + + + diff --git a/Structural/Bridge/uml/uml.txt b/Structural/Bridge/uml/uml.txt deleted file mode 100644 index a1100d8..0000000 --- a/Structural/Bridge/uml/uml.txt +++ /dev/null @@ -1,35 +0,0 @@ -@startuml -class Assemble { - +work() -} - -class Car { - +__construct(Workshop $workShop1, Workshop $workShop2) - +manufacture() -} - -class Motorcycle { - +__construct(Workshop $workShop1, Workshop $workShop2) - +manufacture() -} - -class Produce { - +work() -} - -abstract class Vehicle { - #workShop1 - #workShop2 - #__construct() - +manufacture() -} - -interface Workshop { - +work() -} - -Workshop <|.. Assemble -Workshop <|.. Produce -Vehicle <|.. Motorcycle -Vehicle <|.. Car -@enduml \ No newline at end of file diff --git a/Structural/Composite/uml/Composite.uml b/Structural/Composite/uml/Composite.uml new file mode 100644 index 0000000..326dfd3 --- /dev/null +++ b/Structural/Composite/uml/Composite.uml @@ -0,0 +1,42 @@ + + + PHP + \DesignPatterns\Structural\Composite\InputElement + + \DesignPatterns\Structural\Composite\TextElement + \DesignPatterns\Structural\Composite\FormElement + \DesignPatterns\Structural\Composite\InputElement + \DesignPatterns\Structural\Composite\Form + + + + + + + + + + + + + + + + + + + + + + + \DesignPatterns\Structural\Composite\InputElement + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Composite/uml/uml.png b/Structural/Composite/uml/uml.png index 0009791d75f3fafb9fa3cc47995704fe634b3a73..70162dca7c04fc31ec7c6e762102fabc2b7c7083 100644 GIT binary patch literal 8172 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 literal 12745 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 : array|FormElement[]render($indent = 0 : int)addElement(FormElement $element)FormElementrender($indent = 0 : int)InputElementrender($indent = 0 : int)TextElementrender($indent = 0 : int) \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + render(indent) + + + + + + + + + + + + + TextElement + + + TextElement + + + + + + + + + + + + + + + + + + + render(indent) + + + + + + + + + + + + + FormElement + + + FormElement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + render(indent) + + + + + + + + + + + + + InputElement + + + InputElement + + + + + + + + + + + + + + + + + + + elements + + + + + + + + + + + + + render(indent) + + + + + + + + + + addElement(element) + + + + + + + + + + + + + Form + + + Form + + + + + + + + + + + + + diff --git a/Structural/DataMapper/uml/DataMapper.uml b/Structural/DataMapper/uml/DataMapper.uml new file mode 100644 index 0000000..697e1f9 --- /dev/null +++ b/Structural/DataMapper/uml/DataMapper.uml @@ -0,0 +1,23 @@ + + + PHP + \DesignPatterns\Structural\DataMapper\User + + \DesignPatterns\Structural\DataMapper\User + \DesignPatterns\Structural\DataMapper\UserMapper + + + + + + \DesignPatterns\Structural\DataMapper\User + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/DataMapper/uml/uml.png b/Structural/DataMapper/uml/uml.png index fabd1a82b9c63a4c7b166b8fc6ff0359dc8d3685..05b5812b79e38f7f5aa708300b2b72db40f0a544 100644 GIT binary patch literal 10553 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 ZkQpzRny^!K;FHL6igIeQ#nPt!{|~^_s6qe$ literal 14730 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 diff --git a/Structural/DataMapper/uml/uml.svg b/Structural/DataMapper/uml/uml.svg index e40dd5b..dcc452b 100644 --- a/Structural/DataMapper/uml/uml.svg +++ b/Structural/DataMapper/uml/uml.svg @@ -1 +1,413 @@ -User$userId : int$username : string$email : string__construct($id = null : int, $username = null : string, $email = null : string)getUserId()setUserID($userId : int)getUsername()setUsername($username : string)getEmail()setEmail($email : string)UserMapper$adapter : DBAL__construct(DBAL $dbLayer)save(User $user)findById($id : int)findAll()mapObject(array $row) \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + userId + + + + + + + + + + username + + + + + + + + + + email + + + + + + + + + + + + + __construct(id, username, email) + + + + + + + + + + + + + getUserId() + + + + + + + + + + setUserID(userId) + + + + + + + + + + getUsername() + + + + + + + + + + setUsername(username) + + + + + + + + + + getEmail() + + + + + + + + + + setEmail(email) + + + + + + + + + + + + + User + + + User + + + + + + + + + + + + + + + + + + + adapter + + + + + + + + + + + + + __construct(dbLayer) + + + + + + + + + + + + + save(user) + + + + + + + + + + findById(id) + + + + + + + + + + findAll() + + + + + + + + + + mapObject(row) + + + + + + + + + + + + + UserMapper + + + UserMapper + + + diff --git a/Structural/DataMapper/uml/uml.txt b/Structural/DataMapper/uml/uml.txt deleted file mode 100644 index 215a9da..0000000 --- a/Structural/DataMapper/uml/uml.txt +++ /dev/null @@ -1,24 +0,0 @@ -@startuml -class User { - #$userId : int - #$username : string - #$email : string - +__construct($id = null : int, $username = null : string, $email = null : string) - +getUserId() - +setUserID($userId : int) - +getUsername() - +setUsername($username : string) - +getEmail() - +setEmail($email : string) -} - -class UserMapper { - #$adapter : DBAL - +__construct(DBAL $dbLayer) - +save(User $user) - +findById($id : int) - +findAll() - #mapObject(array $row) -} - -@enduml \ No newline at end of file diff --git a/Structural/Decorator/uml/Decorator.uml b/Structural/Decorator/uml/Decorator.uml new file mode 100644 index 0000000..0a80f98 --- /dev/null +++ b/Structural/Decorator/uml/Decorator.uml @@ -0,0 +1,51 @@ + + + PHP + \DesignPatterns\Structural\Decorator\RenderInXml + + \DesignPatterns\Structural\Decorator\RenderInJson + \DesignPatterns\Structural\Decorator\RenderInXml + \DesignPatterns\Structural\Decorator\Webservice + \DesignPatterns\Structural\Decorator\Decorator + \DesignPatterns\Structural\Decorator\RendererInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \DesignPatterns\Structural\Decorator\RenderInXml + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Decorator/uml/uml.png b/Structural/Decorator/uml/uml.png index e1e83f23f5827e4adce5053f43aa1919224a0d13..1194a629a24d9570569fe7bf72537e6e37d17c9a 100644 GIT binary patch literal 11534 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 z9x&WZrQE!{__sO#l&}B}orNG&WF$kKMb%%j8==G0aA`<185tS9UO_%RendererInterfacerenderData()Decorator$wrapped : RendererInterface__construct(RendererInterface $wrappable)RenderInJsonrenderData()RenderInXmlrenderData()Webservice$data : mixed__construct($data)renderData() \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + renderData() + + + + + + + + + + + + + RenderInJson + + + RenderInJson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + renderData() + + + + + + + + + + + + + RenderInXml + + + RenderInXml + + + + + + + + + + + + + + + + + + + data + + + + + + + + + + + + + __construct(data) + + + + + + + + + + + + + renderData() + + + + + + + + + + + + + Webservice + + + Webservice + + + + + + + + + + + + + + + + + + + wrapped + + + + + + + + + + + + + __construct(wrappable) + + + + + + + + + + + + + Decorator + + + Decorator + + + + + + + + + + + + + + + + + + + renderData() + + + + + + + + + + + + + RendererInterface + + + RendererInterface + + + + + + + + + + + + + + + diff --git a/Structural/Decorator/uml/uml.txt b/Structural/Decorator/uml/uml.txt deleted file mode 100644 index 2561cf7..0000000 --- a/Structural/Decorator/uml/uml.txt +++ /dev/null @@ -1,29 +0,0 @@ -@startuml -interface RendererInterface { - +renderData() -} - -abstract class Decorator { - #$wrapped : RendererInterface - +__construct(RendererInterface $wrappable) -} - -class RenderInJson { - +renderData() -} - -class RenderInXml { - +renderData() -} - -class Webservice { - #$data : mixed - +__construct($data) - +renderData() -} - -Decorator <|.. RenderInJson -Decorator <|.. RenderInXml -RendererInterface <|.. Decorator -RendererInterface <|.. Webservice -@enduml \ No newline at end of file diff --git a/Structural/DependencyInjection/uml/DependencyInjection.uml b/Structural/DependencyInjection/uml/DependencyInjection.uml new file mode 100644 index 0000000..e058b19 --- /dev/null +++ b/Structural/DependencyInjection/uml/DependencyInjection.uml @@ -0,0 +1,38 @@ + + + PHP + \DesignPatterns\Structural\DependencyInjection\AbstractConfig + + \DesignPatterns\Structural\DependencyInjection\Connection + \DesignPatterns\Structural\DependencyInjection\ArrayConfig + \DesignPatterns\Structural\DependencyInjection\Parameters + \DesignPatterns\Structural\DependencyInjection\AbstractConfig + + + + + + + + + + + + + + + + + + + \DesignPatterns\Structural\DependencyInjection\AbstractConfig + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/DependencyInjection/uml/uml.png b/Structural/DependencyInjection/uml/uml.png index f38b80b78218db6da486af7ac3c4f10c618a1a15..91cdcb005896fb3c71858211a920f6739d6bd7ab 100644 GIT binary patch literal 12816 zcmb7rby!s0+peO7N{C1cNH<6~2q+!WHFS43f=CGnNH>Vm1B3L?Al*3(-JQ}5c{aSh z-}k$&bIy0J^T%9!_MWxYUTf{O?&p5)dr#;G1xbvjL{A?)cz_`-^-lT0gNOXUCkhP- zxFSv)-v8hM8(jLGsH(@*ZaPBarN+hWQIk(o=Fzq3nvd_fkHWj(G?$ShJMwR_mGHEv z2;x8DQbbGfytd0Pts{prGMLKsG0`M9G$hFL#}76BJ$(Mecz1Sp5N*c& z_wah*>D?J{@KlG}GJn5KsESnBoEJ+apWtf7g(7JzJbeg!K;(Zv{y^;;2Xm;D4mu(# zZL{oiYZUo>k2!R2qLh-71LqJ`NuM{=nx)Tu%^2itaAP>I99DIhg&@$t=o9Jl1P!YT zbCNBmU>spNlWJ7NWA%4JApwXGz9`12o)Dl4{P$IBS|?12dAocmstAz@_r08_z144> zqZDA7vC8yO(NXtbb4^4Lz?m)+ni>t@-BlSP7(0j^T;;*KM*{lRIekn?sKAYOVc*6x z52sabD=#kWaprW>9Vsgf_uKpxNh6v>s*Tt7o{8gF7*;1mIrdi=b9rxHh*h61bOx|wlO~pTPuI7sZTR9q?@R;8!&UoLZ{@E-1N=(mZ{}LNQNhZSYcXm*q zbJSn1&x0w?mYmJ%9+thQ?esFgR&$BRy>Ufh+po5V28QbPcF=97y57##T z8?Kz<{18vKW9&!bkx@iH#zzTb0oiGe#=!P@>R4R4d9&Qeuf)@9Ce+>CCtd>+8N`)4 zqng0%!(D<_6IMSX6*Dx)gLG+HnnmF%)Vz(ovU)ETiD+x#kFCEsh7 zx*QxaRKZ+wkb@j_z^+Y#i%UpINJ643z`nGS6gsf|Mhk@?{=}CD=nQ8Nm;9dK@tHAg zlSuE_9~qUyspB78F}jjdZE{W)Uj5qKl@)LUi_yT4qhkHybvdD&f&xp@a)+#CAuqK3 z`>x##j@d8YzD&4r`?2Pw2YT;hmg+X@;y$}zn4+6!&-_MyF3q0*ET`yu)wIb@S4kG> z_PF+i5)XIx6a6|L92GOm{cJ?IM_DyhPIkY+jUIQy75jnzJ0N=^Ar4ll%eb)Rkhi_%*#;!yYxM_$3v$S-U3kXykISR}B zkWqQ-B@?*Yok5!AzPm$W{K&K@gIkj#NX>5ZeTxda(YfuUp0^~nTkb{a-HO?<&%L#u z5;)j~tmE}1h~VSbI2M-o@U}UmUpa}YUe|b!D31w}NEmC7pG=^c?>tYb>TD+De>VQ^ z-Mf_v;wMW>F{C&=+Jr4Sm3oTuGV}2}U@eDSb%or03w3g8k0u!s9%Wfq*Hqq*t}ji8 zuB5$lkR#F>S;$*XO|~TY%KcbKyecALB4u3Tpu7U`J2w|`9Y?2Y0)2)Q5QXzpyXXer z5gUa5>Gq9FGcOM_?&6eZu400;ol&$&u(ea!&@#HTKoe3F{U0Qw=yhR(9mkMZqu9q9j#N|J7C{Ko@%!6_Mj& zBT75S;hM8*@}gq4=u6RyMLH4$8{0~(>P&Ib_$~ljvAE+Wmbalb^aY3DN)mG~)8s&~ zCYAK3wi&gK$h0o01p3V;b>{h{;;{=OY*@pSswX`>+B1RlaVQ@~wszDr`m(7C-&Iws zJH=&Z*BTn;D@9LCOqkqquRE$G6boIic1en0r)AGDM@*k)nputAr${&9dk*#bA2a9C zAY0P4ue&3{OLZ0=&nnj~suLP_C@7sRq{Sl!cp8V2MsjmG`y)7emEcFn1mQMGUX zQqL|IF-Yi_?|9=nP8;FTf}ysxV>$B63*Re7H>ZMX2v58c z6rX80?uvh;!lRnWSJ}{+s%09{P{H^iq8l+n{k4cuD`nq{5%OD!!FAlr1~rSeuMOJNP4PGd|!Ova-OQEtGMy85`(rS$&896EMbdE!OSwllZ z9j#7x-0oAEs261Vv~yCN6-DxY?14eRmg28b3kQ9u`TwsN2 z$Mmz=T5(g{f`VznmWw#7oRq~Meg~e&%E_VI#$Y*r=fuTk%=Yn3zQE*mXxPwctpZnN;=e)>%Co`mDpDfyPXIi`> z{FTZ3{9O~iV+@%HDTK>r>#5AgS3B|4`6BsE8c!sydwP_~rl%Q&o=(3<4U3G7JiF_- zH<#)u*^JYc8+?Cn)OF`Zku;i4G&QcK#$HfZDx!bFMq%z1-r8m>u;h6K)NAXC5I+Zm z^mmC7rwbd`;#4w2G^QgE-lV#IPY{V}OmbdvDzs{K1wU0`ZqnyM0oFaZ9SO?mTd?E5 zknla7G~bj>HnUMA>+OVgOjVDijme1Hj*_M72=Ch5K+89=`r}LNa{4syNy$I#rxs<6 zY)uei!AO=8AWv5$rC84^j~p#FEp&xiq^uZ;Z7iU7em zC}H%WBU=u`{DX5(&;VivBEM~Q)ivuWXwVTB)cfdOm~gyUx&=q!QK6aQu5h@9<{?-= z+OF$VS&xhk8{UL&H=nNCD~|Uy3^)8SpIttal#2V_FA&RB@vNU%4B9AAc1GNqMHUqy zG%+opsuC)E!~;UD!oRik+P)GHkGd6P!Z96Tar#hDC7iABVlW-Hf^Y5ChioC zO$YZ!%@KmmN1u-#2yxX_S&0ZucXI>F&SJbrqg`43y-~U?Yz9+9fTGLcq{UCs{RKR> zUp|wJ;KuQ=%Wr_dm(SVA?iU9SrTEr|3GESw#r6(afsNRay~R47HN~%=>&>TE~t!VBdtADBNURz6GOpoIJOG|aNt;&c1gG5^S>i} zbK${-JXUZwTgIDX)$$~1Ofpgio$ehO{X`=s$WE7_mEw{2?JmM6?~BswAAKLkB&>-H zN41B_ICv{Kmko90ati%O}073+XQ*)$w^{o=K(j)Td%Ei)=|mZsk&YixU7Kc zXygZ%2}ATZ+n;{PMNvSOUT9Rlrc?<`i{LJ#rE_d>u6MbK5>k%0ET2oU_+~mMtY@`9 zbrO`jdt77hF)>#O9_kYGj)RQpB(Dg3wl{GO(9w9C){{s%Z(5hcsFI%N3=XG}5;?7;3;!Z(MC1L;m{ve;%9+AuO|EwXyHNS% z%ithh;cR1SUPmEq_S;K^f}XIlIeul@-g>Sq-)M@ZEeB6!%0N~wp2`M0BUStEQc;Cd zSX#RA_Mnr^Z!PU8Bv2v&Mdt2y)A;Dc6a-(pN2Yvql+}HYeRoDZCH;D1Vk5$TK)!~r zNr9B2|71sXTte0;S}l5lTD|5}ppOL-<48&Jbo?`3FyqPizQ^tDl-_Cj;@O!sS;M5@ ztvWcr>_=ZUCS1z7YcasF_z~y~9h1d#ks)YY8Wi-Zn<(j`w#SRCW$M!3nQ%wnJ-BK1 z_E29^|E9O`<{E>GvtW*puzqH;o=x&7bJ=)*$8J9ECj$27rWb6iU&&Lj!0?(VG5Ve5 zg-L3p{T1)V8`N^^oL?JG53(KYyV_PF8D*6`?XTpC zNeyWK#alU5C%a=3qJ_ZoMq{Y9JWpYZDL<8R^Bw#p{H9&$z&qZfXaJi;VoSF1zMM@vHV4KG#~=0bKOR=#Ve##W~! zzzvCdkvs@RDp2+r3>rgPI(r0e^@+R_W(I74z>rl0e<0*ZH zfofl04SItND=*X0;F^S5zowak-t&bL)U%koz`>{5I7ds;VJ1ZzT3OTmvP+Sx=Jbo7 z#FC5sfcJ%Kbw|0~p8n;W!>Nfoi|JB#%Yq-8Qf!P@P1a$FfR*n|<;kV4&VGZYb7^A? z`>>&hKPGeunIFie{TUsQA6~-3V{KmD;fYxxhS%zK{#XW$d(dUD_P*^4$PJD}K zcu=ekIU##qG@c0i6%!L-0uoTY*WxB|;(f|U%Q5;>ckS9t->Df|dh_--?6Ndvh9JM2 z7+Sj=k!iZ@)%X!UINF)n=-cAowWzF7E?L*-=MdkRMaU2JdZQl8sgQ_|#8q&dd`?qL zeH_SylyunOnR@;tjMsqCFVk%jI!C;tRqwP$?`~)2;O;5k4?0$YjJKaBi<$1 zSzl)yZd8E369mE`q1chM5n%fhLy&13ZpA7U$pwnf<2RrXe2zU(;u!JgT@lSRuda?D zS$=m5qks&L^W!%H(5di8Rfifpi4of~jkAiZnKb?NZIm*h)slMA)Kc?JBh@=BIvp=s z9lN+B;+`LODztGIl(TDpdywJ6XDp)nEtT>&0v|H>1!h8=Co41;qw|RC{e<6Om2wHG ze60VL&#PbYC1nW_+wS5G;T*Km_^4hzM@RII;!PR}uV=}&bleh|jY;ZU&}n5~V&_p* zG2=2zeQfr4O#$j^w~7(1Yd`W&*^xtD`S7#cH*vb-r{gE^l;}s^x;YXHKc|5T55p}Z zKYXn9paSArQLWFf_An|+e)Y~of>)HC3%=O){#N4?DiWjsZM0jJMU28ymM7oJ+eGKq z|H@W?ZJu!V+E_k*gRRkPDMb-b@M zdiht@_k22d`wsdo61I}9PL$u>dQj(cS;shUs)j4Fv+2XmRqAmFm5YuTxMUDK)I zG(frud8OECb+{qUP?jop^#dNu_WXLWfTppxkYR7%&eO+YKDK}|d{k08?z?=?tHL6O zWme8UGjl~ETjwi=*9o*4Rz^q6MqHwHUTq>=wr1w7vygP>kIYyX+Iud0g11JGOn=xO zAdv*(Z+yDjq<{`KMNGj~dhksI4T=P(R?TL{M6&D+`@D?h=mdS+7(eKMf%Lw;6A#N| zgtqbgkyt?`syJd0%N4}I7z^JXAEA}{ZtiJpQ9B)-DOOo{I6*Fp9W19In%y16t&p%ZD0QkY|A87-nt!U$WzW-$<+(7YPF8 zKnI!x1kHt~hHgMVAb+9rpT`9h`S%7-L5}7G(EB>gxW9MqaQCk4eTVMw_ix|-=@5u~ zhS2T%*i^uVa2fcbv@*;n~%f&IS1WGVjX*E8MA%i$EH2sC=C7RC*A>WY+RSC((EmYG z)KUvxS)w?r$LoDoT4;gK_YyKs$C#ASm}MWcOmoSdoo5bh9jQ((pj_^#;?rW_tI-=I zoOb?sKI%B%{kZfY{8I~;t|4daen zZn;Pp?_X3L<4#}biTPFVGcd5Tv-9)Ux|x{hq^Q6o)?Jg(>{^n0a$6Jb2bxP?jQP9VgaU`w$7uyRvZ)0*4Y9Ee4aToJBVdWgUp9kP zeWN@FR%pCsRf5ocQS})r4Zo)D(9>^nCj+!HHa3=?gPNL}g=GLl+xY|;;ngOdbT7e0 za@Y?jkfmqrl&abfn4ro9NTWkh&>;m+tydc}uAKbox#?l&2ysW1!UV8iVuFk`{pK5@ zx~I!aR+7BNl25SJM~oMw<#Xv3Qp|4RzPtvH0ebNYu|jC6SC1luY}qBgn_5UhK|k@E zf%lgSrN~hYNu`<@H%cDu&O(w&B5O#`*!xZlcm*N4ZOR`9-;%82q>^Zv_p!1j3IeO& z6dB}S@R#H+U%7OBvyZdonBTX)LrR-dh3n6>Da+;}AxzLCWI#;fBF*qb%+`bsu1o*izxw&B zR=OV6#xA|`=XaZFsg&5~1iZY~)K>LpcvYTB998(Zt_Kx=cBr4IWOB*JQpvjmGLuV9 zuht<#D|-1WkPOi>TUw?we(%+p-LS9~WRsIR;`3=)>@Ty@;G71UlQ% zX((UscP-ACjdQi#|+u8y{LSl*eVrjw2t3$K`X@}2yURl#$WDr24K1~wcp~CX6=KE^j z>Gr0*Mm8Qmkhv7`eD~wAt+LsBxI;Z^kxb|O$;rF^V<7{?tW*;p6BDVK_1%JtD7Po% zLv}?q-%|8b^4qk>z;CkRz1Eub504{UC;UmzIbbX?x>G(VEQ`a`KjHXB=YHmxm{u_E zHjlLdx&3`B{z3KkSV8m`=IH+7VEEqx?IISRJ~3WA`TgbrWP=v1^#QaeTY9j5Y}8kg zhu7U8$;IAd5CKu|Xg@obqGz-_#%=<|79K#Y5cs|iW$}hMhB+6>Q@2lfnA3W<{p(94W!?}k&cz5 z482Xwsl<-}_AGfJ9UF}>aB(=;3d*wwDc`Y>G`UnYM?-7r)*yUh*4^)lGTxslT?*Nh)~rrN04VjF_kTASrw z5^qGq_Au>a9~{hU!?@Pd`t0H-g{-0dBD^T9jis~)7q!-ul%vzo=@Vn8qcS88 znHgPUYZoGx=!jW1sTt^O2@?AC2^G>D51;ivrCpZ`$IoRsbw6;>ORCKxj-v(${oA^y z5TqZDgwk=jid6+(CGq7PL%Z12sk)3o(+ZeU&)-%m)DJ9K-M)IP-oI^?BVwkpu$Ah| zUk%DW!<@I1x*Ft_MO zHGG=r;VR&Uy0)dLARyJUdL>qg<)i;F2czvnu4C7d;jmBj5V&>HjPg$!t~+Jm_0*P zliP&@U)Vg*m(I)0_`>&({>b@Yy+@-WzHI<~?v}^^p z*w7DW-B-bRDWAaAqz8)fsgsiq)z<4E{oa7a1c7vc!KR6~$sWJ)2GJjB9ODEUKDc8} zpkc-5!4DnYi-;1S+_AN0-0R1N1P?UyZ@&d-$^%zW-ieT_;{g2V;oXFvp1qskW0nar=LSZYFZ{_z|xSs3PJ%osU0lOP< zg_dL>s6NE@r&c5k;Sg1Rkn3?DiZ^GxdGC9p%;X zW@ja-ib>?B+rE1p`1QeELp(-YPwW#|vF*EK{Zq1C)V8P{nO|lljZxOqVG?1ZJxu;& z{d{RFNK>BOqS`~~L+q+m>?cHyQLAH-)XM)fI5?k8IiDx`n;4Yjt@8)R!9)vKVL+QxE7NQ7s7l$zd`>O zAMY5a?}*|X0*9d2XaGqDRNH?KcYZx^_J6hQ|0nle6i^cGy!^YvU3>rkt^dbM0e@c+ zc?}B58C6dyW1+juX7)Z z?wpRGZJwT|x%R|$R%~`QI>DVxAI0ZaOy+}+UD%=@K9jp|74j>=SffMad~wY7_hIQl z?0!$RyF_~%d#T(DzKZ%DY1!ia^cCpvR(^h0SJ%eI##D5)?VU4TiY7n3VzTd*<;xG^ zXEMNm)&^Ur{MI(NQ2Y9g&? z;utkn9LkaGea8!bsqbxfv*ITi#VSW+ioE2>v8uUnFO`y!jshYWHI>x1v~&U4Dqz{F z0xqvzT{LkqCC{VI2%CtUv@bFw=35NvYgF(kM`PIVa2$5>s2#g2K5e2)YTwCFy*yWl z^%QzAx4Z|hepXgQ7?bDsn7BCAq+3Depxu<~DF|z) zdv(&6%6yW?oMR95k_SkV%3S6PdPUz=DFeY7WTaCpSY&7=IyaHSP8Spo~g zR?NDT44bUfP!*Al)9>-hl=H8TO|iXEM`)<1TCN7~b_5NBjqc)+JcmBX`O5HOQy=&~ zYyeA1tDL3|W}w@)1*VTxFP1nWdHvDU1Nv6sS+sbargk%oCS(LVLD@&tSYS0!)(Nc_ z2G)Q_{z>g<5mh(oepJfYH-A5f&ndQh8nFnSlEv= zD3murJTopgO%1Fbdc#!Q7aA26_2mm14ii7Ww)UX&ppay0X=$mA3e!@bzk#pC-7fl{ zSf$|KjYwoZ&+hbe3v*yB^XA9R$UG5?FU;Yhy!H`3JqIR=bL`y%j0kG+F~4gN{x3MN zy-C`??>r~^n!w!xCPMxT4tOnp@#Fj!?Hd*{Xjtfh&?!6(M;C%&H zjIf~k_0)n{Pa9gmC$Qfl|F3JrbS#&%y$kD=*4gsM111=|zh48tH!bl0YB;wa z)mfh>^txI%Os0!Z9f^UUDtyLsjUlQg>&sQucALd~8+sUiWbh{9pVj;fiYKQowj=G7{SQG4Nx zChcQTL&)~n+e!EG{%3*U_qf!P@JLQ+z)4tHkkAqh&To)E``*6EI4kp#4jJMfv5kt# z(|4O?zbGLxYAp^UuC%VJ!u9hi)as)O!NQ6!HgUtvl~DjqKBdz(64hL*Q7lT!U*=r2Q%aZdd8xHx3G_E7LWs+P?Bcsar z($UrT3B#-j;~ewTKdKIu9EnrCrK)!65s8q|f#gqY3tOzv#wPvCjs7)6wKiaIm^QjX zB~rvO$-Y{XEYzAi3_UE}YpLwvhx0xA^$W#qk?{dQyG1%(%QU=iL9m}Z?qLj!eNf+D z%0Qjb>-W8xy6IZztf7oe4wWs6ninbi?+;G$9~MRLRDue$OO#;vtpIVkV1}d=WwT#+Gfgxo$`s`dVd!WB-~J|imT0iH#&6fV zbuxCgCN2~k<)KFXTh#x4%MOk5`5hetX5vniLi>$&e1gUI1@;(_qCDh~N>hNlKZknp ztK*P127Lm16ZJkTO-Tr0d=0Q|7-}gng2$lQQB8osWD`A*K3&re{L@jug{fkaL7>q+ zlo6$b3D7@Q`!*}($8XDUsJi=XbM$Vu=WtH;iMkQ;d|9mBh@)Ig0V zjC4Prl?)4j*4oTfK_-SCs40KfNP^@QHuwn=#Q*a@5+1-kB9I@#zjszXx+fDp)uMOG z;bX(c_mcp}$39TV^$?53eVE5J@EIYa{bJB~Qj6;UMf zySP9`r3jJL?H^H&;1KwMvrI3V`OfCeBEw&4WL@gOivpJZ0C>^ZpJf<7MIkId`M_|4#vyu*W;|hdBn~|V;G*iasu_zArIIabQ)_7( zyCFjuZHk=hQb@^&bp*|8C*WEcnUbNzmwGYOU52@)bwVJ*A0ric_cq3RW0fD&5~S-p z%)#vzUzf_pPgKgv3ApE>%Gb&dfQ=K>(bL@p6&X4;xtLhm#3}rtyYki!6R&k?tTv{u zZA6FtbZ?sua4v=?{&6nMcpB!uL$6!WUbaG|_tERTWQZyW^{xoj>tTTct*|{VA(>79HXrughUW!R!#np&$M(lwqj)Q9}fk+jKVr{{d zdbS{T9>jHb>P1_T(#zH}hEyOe6Z(oDmzp#IuS>KDC=E=< zJ?K90M8p0Ix)+K?G^@8HiK_zok1_~RAT6Qb+cqmFR)_~B>Rm#t7X~xAo#m-gHhsqy z0_@C!B?j-^$o@>DbS6A>Bd&*VgAN#DX-d)lPuV%H>L>M7>8d$4vKB?^;eSjZ*~+Yb z_ISfo_j&9p0J})6YCR5WeUL-^alUK3hX#(h5pRoV7Ko0aUX<#wCc0Lve@0^95E&3- zF+4wwodFq8NQeTVUexNbE0C!4W?5x4n4_8w`u5}3LECzZNCZG^uy$D9%F&dEd2I&e zTP@_E$!1g2+H*-8e-5Xk0Fr%-(|^+1)Ntjyq&DD){2gGl0ZZ-@eKVb05C#N^Z6~q= z$-DUhTx=j!wP3mrQb-WH&dMnxH8nL;Vjdc*9NtmQH%a!)E{?dPgj&|UJv~0IkP(j3 z#PXP_88wc_2xJIVim?_24NF#bMI5)REWESru%ss5eyW0o#s9@YXtyc@8(;iLoQj^_ zK+|J<;#;35`-(X~kp0v>t7yzebDw%+y1XoGDl3a=q*rx}kd^wumnnj}I7HmrJIOah zyBeO+SvU5+iwOTA!|Fiu>Un8!{|rp4B_>((LSt5$3!i+6yj8#5hK52!9uz9#7X z`?xMvIukx?xT%J!&G^cSa!S|-;Un|rY*Ul9Rs1jUdFEzH{imHp= z&sEBKSy~EaX32eba5T8SvO4P0Hc}wA!g+|lJyY*luE_^(%V=HeU;Fv4v!h^%$T;~x z^Pp|z77HuZBne-L6*mB)ddC#u~zQW&2epjzfb>!>Egc(C;e z@3vy6^Udcg68LWlW}VeAIAo{i8)UUC5Ztzt1|sU&23`^lZ$5vw#;W%~mQlm?b+e}J zDMS}|;3^b+T=IZ5UCENwD%KUp=BU29x(Yn5B8AN>EK%Pu#yay}yW}wZZ=7Y_ znGySKE2_SyvN8$GuX*fd=>BQYfXB=-GRL!TE`2d#b#+A?zdAvhHK8dNcMoe)A($JX zuyi-xykXJF6TxM?&qyZ)H1iDf)UK_;?CVFszQ2%jsZ1_B)fe1Z75`T>`5(0tX31MJ ZZdYCC$f|!e@K28i((e`CLBtF`|1SkbDcb-5 literal 18347 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 diff --git a/Structural/DependencyInjection/uml/uml.svg b/Structural/DependencyInjection/uml/uml.svg index 1014592..2f75b09 100644 --- a/Structural/DependencyInjection/uml/uml.svg +++ b/Structural/DependencyInjection/uml/uml.svg @@ -1 +1,432 @@ -AbstractConfig$storage__construct($storage)ArrayConfigget($key : string|int, $default = null)set($key : string|int, $value : mixed)Connection$configuration : Parameters$host__construct(Parameters $config)connect()getHost()Parametersget($key : string|int)set($key, $value : mixed) \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + configuration + + + + + + + + + + host + + + + + + + + + + + + + __construct(config) + + + + + + + + + + + + + connect() + + + + + + + + + + getHost() + + + + + + + + + + + + + Connection + + + Connection + + + + + + + + + + + + + + + + + + + get(key, default) + + + + + + + + + + set(key, value) + + + + + + + + + + + + + ArrayConfig + + + ArrayConfig + + + + + + + + + + + + + + + + + + + get(key) + + + + + + + + + + set(key, value) + + + + + + + + + + + + + Parameters + + + Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + storage + + + + + + + + + + + + + __construct(storage) + + + + + + + + + + + + + AbstractConfig + + + AbstractConfig + + + + + + + + + + + diff --git a/Structural/DependencyInjection/uml/uml.txt b/Structural/DependencyInjection/uml/uml.txt deleted file mode 100644 index b6765c5..0000000 --- a/Structural/DependencyInjection/uml/uml.txt +++ /dev/null @@ -1,28 +0,0 @@ -@startuml -abstract class AbstractConfig { - #$storage - +__construct($storage) -} - -class ArrayConfig { - +get($key : string|int, $default = null) - +set($key : string|int, $value : mixed) -} - -class Connection { - #$configuration : Parameters - #$host - +__construct(Parameters $config) - +connect() - +getHost() -} - -interface Parameters { - +get($key : string|int) - +set($key, $value : mixed) -} - -AbstractConfig <|.. ArrayConfig -Parameters <|.. ArrayConfig - -@enduml \ No newline at end of file diff --git a/Structural/Facade/uml/Facade.uml b/Structural/Facade/uml/Facade.uml new file mode 100644 index 0000000..d6bdd03 --- /dev/null +++ b/Structural/Facade/uml/Facade.uml @@ -0,0 +1,24 @@ + + + PHP + \DesignPatterns\Structural\Facade\BiosInterface + + \DesignPatterns\Structural\Facade\BiosInterface + \DesignPatterns\Structural\Facade\OsInterface + \DesignPatterns\Structural\Facade\Facade + + + + + + \DesignPatterns\Structural\Facade\BiosInterface + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Facade/uml/uml.png b/Structural/Facade/uml/uml.png index 2e68ca6d0b9382d4959ebe388278e0b0f1415213..e13cbdc6f9b960753f42eeefff14e6f636e70d91 100644 GIT binary patch literal 8579 zcmb7KXFwBMl%@tmf`~LjjZ&m522h$nK#H`7^o|rm@4dGmO0NP6K|ng82nYlaP*6a6 z??~@Rl@MSDeQ)>e{@L9h$;@Q#+8n^&LE5-2K z*ruVkNJDaO5Xt=|HR1etXKEwrxTk2ru*1GatXB)vVWzu$lNe)ixK>tHDyEqKw6Sq^ z-xpgb>Avok-{UzWs%3Q8)oi)KCqoK-bslXLL`eW9h4%fQ4@3}385BPBUk9!z8{AXeVw5L57XB=Ii@7fLNPZG1Ifkw@?tRl@)iZm~CTbt-`SPq)v2*0M8 z^v%sT>Y6=#nxVx!+}x25|8`6(t%Q!G=tckAt1PoLrQ7Q>zTNpL(FtS{Isy5P8Z&~h zd;OCd#twG*mI!WGdYuEBNr?7$YL(wN?z4<4nf1-wTo2;XX_DHLGL91dLHLB3MZ)L-v4iWFnV-S9h#rf%J4Zt2` zD=B~e>6Vg`a=nWDkIjXA9?eJn`z$jLPak>871wO8N_s2uF|gBkn4G_DQZ!{dh9xJ_ zKjAn_JmdL5cpkFOtT#D^D7w)YVxyj{DWDri^HSs4(Vrc1r{YV@N}2fK%=f|O#@nJt zgBM1_HBXz#3(4d(=6&raf!jUwC0bnZ zvqp6&lwTs_g`^K&D%|^;)^d6@^f6__m&V9g{QgOc13zfSH)*9H#xue@b8vSmoY>>D;z$a3R;c$rhf#JztxQHzfCqh6q_ zZr}l4w~%ccQeQ|#JJg-!NYsy%75SXX76Z)>rKhb&#_3>jI+7d3)xJC((n#hevQPtO^J|F^z0gJDNFBFEB)x+ zxPNr5#=xy>ma8~dCKvQv&{hiY`)2gOq^+c=@!6Lz)wMHY*lU3i3bc!*)XbYjF$1Qj zBlfMt-g#}n{Nb<{DLOPJ^hIZBo+lk0sR0Mwm08i+YTyw?s02Pl{c#R{FbGIH2q|E* z;e$zGaj+N0ATS&FU8*#pV(6-6m7xUf(C)pIt4)VG(&FfaIH8N%PUu0p1EkuVh0?+4|47(uTB z;6?&4zZZOc6mt0LRXjiZ$7SzS(|drWz%1|`ffiD2b_t;0Cxk#A2IhnUW|;s2A_|(4 zyTiNx?CCP&8k2*nYDQ$K1ppIB6%z_B&>>EwGXf%w!KW)rlQSj50%0j zbCcA<=BpmphKamcEgro#?d;j`_M5hbpl1#lkcWQ6!9-#uf6h&Gz2li3bz;5x=%(*P zB`bD)&CJ&pYaKpdsLIbvqAcWQA5+;vCFCP?@t~@s#BvqHGpg5*Vtpq5z`(CyXf6sp zX&=`7wLbYM-+NM;P)QteE-L7D(J9xz5kXOcMyG~*Hp=r}eJ3E#*vFbrBMM;B=Oshd zgtxigVFnUbDv0v$)U6C7j~iZ?%D{0`4ov#46WsjI?_E|+P-{uCq2sOM#A6e&3vA07 zgw$Bw^Mi^_KjRYkSgVEd5 z-aFmD&U83USeSK9nq_EbB(VNnA(|g69d+1XcNpnYS2n_0g|U3SwB!&&ASo4H?f;}R})zx%7!(lTLQKRaqoI~B*F@mhYZ9d0ku|5%mz z>4jMLKia=1a~zntJTO-kQ!dUaWbB)H4&+W8bXGU4!N(cViQ z-+IZ(=9T5$CWf|CNv1K^lb`%txtv}|0!!F$Z21i`3Xsdl{Gb?G%w1DK3Ud-S8v!8t z5@h~_A?%}z31LmeWvp&A4ve*j0KjBtsK7EghFaK2yRYcJA_QcU2#}|p`O2#LyGNqd zeqRMOR1P=c7-lU1q~QH?G4`8=eJEwxsCK^iRZ~A|QR8b5LP1H{03-=(M{DF{7f-u> zL;SQkKvpxb=++4O@atNUIakQx|NXQbwQWt%X>rSs;cc+(J=;Ok>p?H--Varjv+`Tn zpztm4K&C39--5tZd(K1srjwm7L8BM(LyPZwwlx*?0>xiGyX(Vr129nsvCm~L5?`9!xvUdL z`P8f}7`ptymz(vz_42TAN&^&#fu)Y(@@QfJ(pUjk5-Jh`&SkZhB5WjwC_rQdLVsf% zaMR}|`< zC5Th}JA4Z_z}9|ElONvv>^1p=R*G7V3g3UQ>uzDgR=f~;_k+d~*2;cc2esB1VyGN0 zwl!v6S`Qz{Ef87c?ThoK0Kok++AfkQ1}BD!1YZq z7$O{BApSCA{oYKM9sqU^C47J~ zjWUYmAHMa8Uy3vs6b2-<|LfuZ$JT&x{s&w8@7xWzO1h5lnq=G*%bPjJUvP-8-Mm2s z0v1iGH3;MbfdS>elv*eVnEt9Y@I~3I&KkB%1LnzUh=?=dXWMpo28vgJ4P6g=Xb2~4 z5cOfB2UioBQH=I|DvM#h@)!=5e%&SnD=*HG59wD|p4E9X$047`BZnAMvPiYgax;U>d_~^empble@5- z?c|+J$FGcF`q{s#!(Ip(!r|-7nPO=vrZCO%XL4OH=Z~+Md_3vw3iSQ{SEUkniLMda zQKQbvt8*vtKJ~&RPjy1!yijto)?e`1zMWBFm$JK|9&Aca#2N!kOpF|8?$rX5bN(hl zlfdDFRcy+Yf6q=2POceySiQ2C)oX}br^zeJ_e|k0wnNy?_!j91B#|}nZ}y86>PjpE zWtYYC6`!E_45FVH)EQDIyPk8KUAE+szdr=(MB>>Y6UDTc( z_9X?nl=F+|JZYY)F%M|YRfbsT1AaDpHIqfII)m{#FHUtYwX=ozEuny7@1Rj6_rC}x ze^=hyg#fkUq^~h4RQ6EWjWQ`>E_Ju#2<`&=VGj60%Xox#118V&)-Ua11_$nP%Yvp4 zQ+gw7S5yovEIWex&BCrv)v4TU#l&_yL|-~0%(<4Ur@a#(&R;W#*3%GxxE&reo95Ki_WYi+cz8y_Ec z_m{k=py0|nV6pu^^6vY_R#GPUke&9`fQzva0(+z4jz@JSWK}jkmi8*z+InfM&jHS= zroB95<3CGX@MuPlyMye6!bjyWIrr{Z&zP{akCWgpA%N~~s(d3!zL5UkB4i8j!Ynx)Jn&z8A%|I`puH?t8|?)gGW|_ zC?xW|^jb|aF|kIz=~9rIXh|*{wQUK4WUI^}(?NRCcSR;G?5OSsg^QY$_o9Rb*SUd3WpqW4_l4%=xtJd3N?&fD zyqd97hl@3al^)!1esRDP^PN0tfVHfiD>gSNM%L{3q$?>|)S*m^-MWSCV~=6N$gXP9 z^ZuBG1V+A^DB^mRne|BsLw_or<}m_wrL@$zoRx>V9ZS`oo*10=3Z+lRX99Pe8q?(Z zXZhCX57iVpCadlZ-{)&V0K~c`a!dZgYjY@?E~zHUjaq;YZKqpvwz%Mvt-1PoD%(*b zS4v$om(P=NU+n+}+e}SB%B%^m(UxNV@>p2qDD<`~uRx(#IrFvOTZUGuAPk<~&R&vF zJyx~>D}-fK1{Q>AySk`X-(D>1?G@nXACc5Ng@7e)%-e6NTyOsqPgm0Bx)i1Fy1o<* zBNhx-2~~b_7xL1+;)9vq4jL32=#2dweLp5aOGCP7Edz1N?^oI~nVw8DmT_uv{B5&~ z4nuz9&S(!|s1T=53Z1pDW~oGtN={^rVtLD_y%6H7HPO~IxdN4N73)KPe=rhD70WxB zFRGlfgi+Jl_iju$TJrE?*+tv@ z&kHecT-Q_D=s;%;ZAIcPj##1}{qihEADyz_OcYXiCtIe;E7oC(T+;l%8LUO(aDM)9 zExpEdaA&c)i9LT;czC#tK_mtv-ht(|;ITF-T3TM#Z$kP>bi60M40?=N9(zw$Y_%VrH zRQb-55KcEUkDahg8}!&G0wREZge`*g_}wK$OZ^+7Z~Y6R_pY=u0`O|YbP2@bA$NgC zOm*aAiE^N+tlhvkW5fNoTM!7=e?9W+!sHHA?_LL{m*^knh7ZdHLjwF!ry^~QsmEJI zg(bOdQlS~%S>NhX2@qb6n_o>hR0I62aP9Hg@kiRAYX~R4o%;`uHSoYXBu9QOKDd!^ zx~4{$v+Y4-{Ly!=dUTb`hOhtm#`B(EXH7Hpes|(9Amcxf?zp%D0`{o4;0eiW4 z5Ppvx+*VbNiP~H2^1$b|Co2xj%mu|og4(*ngHwkS3u0y4DLQ(pV_&n%7HqM80gesY zRo^$V_~oSFf{Xrsu8!J>a!rp%-hd$jJCld~KXU?)C62#;p<{0H+cwGXDBGH}E-7E= z+{XNn(Tmer%U+bdWcr++ecg$6KLjH!WH!%>zOFCo>d2UEpdIh z=<{$l-M-;`^o*J7{mms-l;m}G7RWNsv1ZYMPpJ1hWUYnFR}^oO*O8l&>>isC!~)8R zMp=&!Fyyxf_#rNk_4PZ(;(S;iuPpx?{x;aA?CU$m`ZW-Prtuqh#lVEVCaIkdPc*ILKi)J7!`eMhN?uApR{JDUj*Ce%z6X z{oWti>sEcW{1KCwpFPUg$o{*?^Nv8Q>@0F3eTO6Fk)Ijvn!gxRJ!c>Lt70V!J>%g? zJwtql{q#OlsLwQSzv(Hd6<9F_lF)LmDo9bxJyn;^pvY?s2R@SIT&lrH40hh=5aW1xL98NDv}@bvPr`I zpk=K;B457QcP8gxcc?$ZUo2NYN%3vWmV!=H>C=yIgkyh_tAia~nYuo!ac}6va$t-b zJq-wTUPq-u+cNgA$^m19Pr1Iat3j4270C*=-g={olYv6U%dtEDV$6(>aJ!2y20VKu zN)L8F#~T3MhnU;m$51CpIh()}OpwaUQwvQX6*Wg)S67pc=FIg#FWjytXUq!==^3T@ zuh`+jjDsm~8m?KL&3@Zi#NtJ~<K~c`?KYbz_WnC+1eQftgtC8^nB8{->(At9EJaE3@8+A zv1+{?bYU{a(AiC#ao^Ibr0CvM)%XuOh@E`3wV$csBQesz{kZWrYu>v_l`k)={g#B5MOq@-D*Tj%A)QP))84UhvZHNV4 zZy=C6qiYK=UP5(Jf@fGY=kuM%Tk&}D@2UX*x4N`ssYUb03Ovxa!D3wWvrY6~Y!9s5 zMSz9l=5LTS#xUUZ zW#+Ekd-t`B6HA5D>&6%I503VU7w-0CW@lA@pA^LHD3f0(aehr7!i58(W#YgXgW$vt z$G%^KH22JCkW{GF8bGMz)(O}=0Rq@}SA}Y>x8puFKnrEHgFp#*@ieGlHYp2Y1nZSc z+3z-S6BhMDh%sx5XsHCVWCns+?gkGkXzFd z$fqkCi#bGGs8%R)= z$iG0W0rT33p(=64^$HA?D;0WmCN74#JfO;3O2D20RwulhvS2)Nb@N*CqVf$ zfPI_;Tfe^kKuo%a1;S`=lqLkwuDkwJmp`*Cg5bxyH25ptVP|2j4um&FtDMBM%RdVL zVdpp5gMt3B^feEpAp*)1jZh{v_>iSS2E3%@MgKE~wYiC}0@T3f@8-QS@QESe6e2~~ z${_e-nrsS)Hz_zS5$})qDD%h5diW3pf6maqW10-0@c}mVP8V$4%4z90b+L+;mnEzMC8Z&pzB5#Ej3S_pZ}*FBm`$8?M-IF# zm(fOgcgG|i%ZC~dZd2Z@_*tNuXlN^SGa8hNfx5?fFN72BUnJZ+gUub7Jb%Nt-o_WP zBmLTJp$9QXM@9rmTApMOTv8paL*oY{QOm=?Mc=3CI8qorMY0!skDM6b{{IdMV6hm7 zX&0flWwxT8}G{3L}>=V_!C7+k5|?2^o_SA+3cXjc)ccCW;^ zc~>XdK4&S049%4k=vTfA$eZz6O2~V7^6HjWoQ#&V5@SCrjfK6UULCK3qWv`4iQ8eF zJ5OsZ+ho`C7oZMDcEh-4ecDcLZVBdC=h}m#YjIjJSK25PCvCwgnKKygD#$?HE3(Cc zvUWxDr-{5Ui6h;ump%`>ico8&UxXn91oLd%+mcgLO=)e@uF!7BcN;Kz*`qQNNaZNJ)v{0 zw;kyjmhENB6oOvsGOi@?#+(CV9wn?KHgYLbay?bZ)*l*j>}R|D`FMi+Ib&v_Z*0Kd&RDJk>xMrD@qO(dzu;?d!H@il#Q$zBVEx5+9I^Ybu*U3G+ zJT^uTbdHm`o`T(yGO8a{`(;V3=r5G=@<~^9j*nuYB~_Edw5WSQEo@s?`b>(|mE@tM zJU0BdXi)0x94*lk z+jj|5e~ikmuGV_H)?LncDOCNhDw+D@wF~^DhN}g^uROj0f3Cn&lv9;0lQ9kX57#a( A+W-In literal 11877 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 $os)powerDown()Facade$os : OsInterface$bios : BiosInterface__construct(BiosInterface $bios, OsInterface $os)turnOn()turnOff()OsInterfacehalt() \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + execute() + + + + + + + + + + waitForKeyPress() + + + + + + + + + + launch(os) + + + + + + + + + + powerDown() + + + + + + + + + + + + + BiosInterface + + + BiosInterface + + + + + + + + + + + + + + + + + + + halt() + + + + + + + + + + + + + OsInterface + + + OsInterface + + + + + + + + + + + + + + + + + + + os + + + + + + + + + + bios + + + + + + + + + + + + + __construct(bios, os) + + + + + + + + + + + + + turnOn() + + + + + + + + + + turnOff() + + + + + + + + + + + + + Facade + + + Facade + + + diff --git a/Structural/Facade/uml/uml.txt b/Structural/Facade/uml/uml.txt deleted file mode 100644 index e4b0b94..0000000 --- a/Structural/Facade/uml/uml.txt +++ /dev/null @@ -1,20 +0,0 @@ -@startuml -interface BiosInterface { - +execute() - +waitForKeyPress() - +launch(OsInterface $os) - +powerDown() -} - -class Facade { - #$os : OsInterface - #$bios : BiosInterface - +__construct(BiosInterface $bios, OsInterface $os) - +turnOn() - +turnOff() -} - -interface OsInterface { - +halt() -} -@enduml \ No newline at end of file diff --git a/Structural/FluentInterface/uml/FluentInterface.uml b/Structural/FluentInterface/uml/FluentInterface.uml new file mode 100644 index 0000000..8fca787 --- /dev/null +++ b/Structural/FluentInterface/uml/FluentInterface.uml @@ -0,0 +1,22 @@ + + + PHP + \DesignPatterns\Structural\FluentInterface\Sql + + \DesignPatterns\Structural\FluentInterface\Sql + + + + + + \DesignPatterns\Structural\FluentInterface\Sql + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/FluentInterface/uml/uml.png b/Structural/FluentInterface/uml/uml.png index a1b6b5eca28f2a39b616d3cc38a55add9c9f97e6..e8229a22150baacaed2ed162235723a948f94d7b 100644 GIT binary patch literal 4974 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 GD(GL1Pk9^w literal 6099 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 : array$from : array$where : arrayselect(array $fields = array())from($table : string, $alias : string)where($condition : string)getQuery() \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fields + + + + + + + + + + from + + + + + + + + + + where + + + + + + + + + + + + + select(fields) + + + + + + + + + + from(table, alias) + + + + + + + + + + where(condition) + + + + + + + + + + getQuery() + + + + + + + + + + + + + Sql + + + Sql + + + diff --git a/Structural/FluentInterface/uml/uml.txt b/Structural/FluentInterface/uml/uml.txt deleted file mode 100644 index 17a76e2..0000000 --- a/Structural/FluentInterface/uml/uml.txt +++ /dev/null @@ -1,13 +0,0 @@ -@startuml - -class Sql { - #$fields : array - #$from : array - #$where : array - +select(array $fields = array()) - +from($table : string, $alias : string) - +where($condition : string) - +getQuery() -} - -@enduml \ No newline at end of file diff --git a/Structural/Proxy/uml/Proxy.uml b/Structural/Proxy/uml/Proxy.uml new file mode 100644 index 0000000..9b407e1 --- /dev/null +++ b/Structural/Proxy/uml/Proxy.uml @@ -0,0 +1,28 @@ + + + PHP + \DesignPatterns\Structural\Proxy\Record + + \DesignPatterns\Structural\Proxy\Record + \DesignPatterns\Structural\Proxy\RecordProxy + + + + + + + + + + + \DesignPatterns\Structural\Proxy\Record + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Proxy/uml/uml.png b/Structural/Proxy/uml/uml.png index 2d7b804e049d69658d272f9a9141738daafb4bc2..82f548a364897abf7530463465f00f83d9a66d59 100644 GIT binary patch literal 7509 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 LL!na6Ea<-gyD`Ae literal 10913 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 Md3CuO8S}9J0so;`4*&oF diff --git a/Structural/Proxy/uml/uml.svg b/Structural/Proxy/uml/uml.svg index 939c8e6..1ec1d46 100644 --- a/Structural/Proxy/uml/uml.svg +++ b/Structural/Proxy/uml/uml.svg @@ -1 +1,281 @@ -Record$data : array|null__construct($data = null)__set($name : string, $value : mixed)__get($name : string)RecordProxy$isDirty : bool$isInitialized : bool__construct(data : array)__set($name : string, $value : mixed) \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + data + + + + + + + + + + + + + __construct(data) + + + + + + + + + + + + + __set(name, value) + + + + + + + + + + __get(name) + + + + + + + + + + + + + Record + + + Record + + + + + + + + + + + + + + + + + + + isDirty + + + + + + + + + + isInitialized + + + + + + + + + + + + + __construct(data) + + + + + + + + + + + + + __set(name, value) + + + + + + + + + + + + + RecordProxy + + + RecordProxy + + + + + + + + + diff --git a/Structural/Proxy/uml/uml.txt b/Structural/Proxy/uml/uml.txt deleted file mode 100644 index 22c5272..0000000 --- a/Structural/Proxy/uml/uml.txt +++ /dev/null @@ -1,18 +0,0 @@ -@startuml - -class Record { - #$data : array|null - +__construct($data = null) - +__set($name : string, $value : mixed) - +__get($name : string) -} - -class RecordProxy { - #$isDirty : bool - #$isInitialized : bool - +__construct(data : array) - +__set($name : string, $value : mixed) -} - -Record <|.. RecordProxy -@enduml \ No newline at end of file diff --git a/Structural/Registry/uml/Registry.uml b/Structural/Registry/uml/Registry.uml new file mode 100644 index 0000000..564dbc9 --- /dev/null +++ b/Structural/Registry/uml/Registry.uml @@ -0,0 +1,22 @@ + + + PHP + \DesignPatterns\Structural\Registry\Registry + + \DesignPatterns\Structural\Registry\Registry + + + + + + \DesignPatterns\Structural\Registry\Registry + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Structural/Registry/uml/uml.png b/Structural/Registry/uml/uml.png index 3697b8ee004d7ab473c781bd965ef833b350402f..9f92dcb0620313775cf8743aafc87ea6a62b326c 100644 GIT binary patch literal 4658 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 F{s)tYF^~WN literal 5252 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 diff --git a/Structural/Registry/uml/uml.svg b/Structural/Registry/uml/uml.svg index fe0991d..7daccac 100644 --- a/Structural/Registry/uml/uml.svg +++ b/Structural/Registry/uml/uml.svg @@ -1 +1,152 @@ -Registrystatic $storedValues : array;static function set($key : string, $value : mixed)static function get($key : string) \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + storedValues + + + + + + + + + + + + + LOGGER + + + + + + + + + + + + + + set(key, value) + + + + + + + + + + + get(key) + + + + + + + + + + + + + Registry + + + Registry + + + diff --git a/Structural/Registry/uml/uml.txt b/Structural/Registry/uml/uml.txt deleted file mode 100644 index 483e60f..0000000 --- a/Structural/Registry/uml/uml.txt +++ /dev/null @@ -1,9 +0,0 @@ -@startuml - -abstract class Registry { - #static $storedValues : array; - +static function set($key : string, $value : mixed) - +static function get($key : string) -} - -@enduml \ No newline at end of file