PHP Design Patterns

PEAR, Smarty, ADOdb, OOP, PHP 5, XML, UML, Şabloane de proiectare, PHP-GTK.

Moderatori: coditza, Emil, Moderatori

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

PHP Design Patterns

Mesajde lucian0308 » Mie Mai 19, 2010 2:45 am

Salut,

Acesta e primul meu topic pe acest site...

Ce doresc defapt e sa dezvoltam subiectul legat de design patterns
as vrea ca sa strangem o lista cu cat mai multe din ele,
si sa dea cineva si explicatiile pentru ele, ca sa le intelegem mai usor si sa
vedem cand e bine sa le folosim.

Am gasit un o carte foarte buna cu ele
The PHP Anthology, Volume II Applications
totusi as vrea si o exlicatie mai devoltata.



Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mie Mai 19, 2010 7:50 pm

un prim pas ar fi sa citesti astea

Design patterns

PHP 5, Factory

Programarea in stilul MVC

si or sa mai apara... dar ai un inceput...
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

Mesajde lucian0308 » Mie Mai 19, 2010 8:30 pm

Da le-am citit, totusi sunt un pic mai greu de inteles datorita limbajului tehnic.
Mai usor le-am inteles in engleza, fara suparare.

O sa incep cu Singleton cu ce e scris acolo pe site.
Un exemplu in care este folosit foarte des este la conectarea la baza de date.

El este făcut pentru a permite accesul la o singură resursă care nu va fi niciodată duplicată, dar care trebuie făcută disponibilă în orice moment al execuţiei aplicaţiei.


Am inteles ca se foloseste la o resursa care nu va fi niciodata duplicata.
(te referi la obiecte sau si alceva?)

Adica un obiect pe care il instantiezi o singura data, si care este disponibil peste tot. Banuiesc ca daca il instantiezi la inceput poti sa-l folosesti pe tot parcursul aplicatiei.

Exemplu si realizarea lui l-am inteles e foarte bun si bine explicat.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mie Mai 19, 2010 8:43 pm

iti pot raspunde doar la tutorialele scrise de mine, si anume cele de MVC (e stilul adoptat de mine) in rest las pe cei care lucreaza in celelalte stiluri sa explice detalii...

eu prefer MVC deoarece uneori nu lucrez doar pe 1 tip de baza de date, am avut proiecte care necesitau sqlite sau mssql sau alt tip de baza de date, si acest stil se preteaza cel mai bine pentru asa ceva... (bine nu e doar asta e mult de discutat in mvc)
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

Mesajde lucian0308 » Mie Mai 19, 2010 9:00 pm

MVC-ul l-am invatat o data cu Zend framework, din cate am inteles
se foloseste pentru a separa parte de design de parte de programare si de baze de date.

Nu cred ca vreau sa stiu inca cum se face scriptul de mvc, am vazut un demo in link-urile de mai sus. Sistemul MVC vine o data cu un framework mvc deci nu trebuie sa-l fac eu, daca folosesc un framework mvc.

La MVC mai e ceva de adaugat?...

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mie Mai 19, 2010 9:25 pm

depinde de limbaj... daca vorbim strict de php cu mvc o sa ai partea de control a datelor apoi partea de afisare a datelor separat (daca vrei sa faci o combinatie de program de genul celor prezentate la http://winbinder.org/index.php automat viewerul trebuie separat)
si desigur daca vrei ca aplicatia sa ruleze de pe stick sau de pe usb sau cd/ va trebui sa faci cumva cu o baza de date read only (la care se preteaza sqlite) iar daca ai aplicatia deja scrisa in sistemul mvc nu trebuie sa modifici mult ca sa o portezi...

desigur la viewer mai intervine si template-engine-ul care intra intre controler si viewer si isi face el treaba, sistemul de cache sau ce mai trebuie (gen smarty)

daca vorbim de alte limbaje (cen C++ sau asemanatoare) stilul de lucru MVC ajuta mult pentru separarea treburilor in cod, posibilitatea de creare interfete multiple (skin-uri) la aplicatie, si alte chesti...
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

ThePhantom
Average Member
Mesaje: 78
Membru din: Lun Mai 28, 2007 12:19 pm

Mesajde ThePhantom » Mie Mai 19, 2010 9:50 pm

Remus ti-a dat ceva detalii dar lista continua este putin mai mare asa ca o voi completa eu (nu iti voi da si exemple poti face un google dupa ele):

1. Factory Pattern
2. Observer Pattern
3. Singleton Pattern
4. Lazy Initialisation
5. Chain Pattern
6. Adaptor Pattern
7. Strategy Pattern
8. Template Pattern
9. Model - View - Controller (MVC)
10. Model - View - Controller - nu stiu exact denumirea daca o stie cineva sa ma corecteze... este vorba de o implementare a MVC dar fara Model sau ceva de genul .. deci ar veni decat Controller - View si din ce am citit ar fi mai usor de implementat si folosit

Daca o sa am timp o sa revin cu cate un exemplu pentru fiecare in parte..
Ultima oară modificat Mie Mai 19, 2010 9:53 pm de către ThePhantom, modificat 1 dată în total.

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

Mesajde lucian0308 » Mie Mai 19, 2010 9:51 pm

Legat de mvc
Cand folosesti MVC care mai e scopul unui template engine gen smarty
sau la ce se mai foloseste , dc....

da corect din ce am mai citit am vazut ca sunt mai multe
desigur in cazul de fata google nu prea foloseste.

ThePhantom
Average Member
Mesaje: 78
Membru din: Lun Mai 28, 2007 12:19 pm

Mesajde ThePhantom » Mie Mai 19, 2010 10:03 pm

lucian0308 scrie:Legat de mvc
Cand folosesti MVC care mai e scopul unui template engine gen smarty
sau la ce se mai foloseste , dc....

da corect din ce am mai citit am vazut ca sunt mai multe
desigur in cazul de fata google nu prea foloseste.


La MVC pattern de exemplu poti implementa smarty ca View
(din cate stiu despre smarty - este un template engine :-) de pe vremea cand inca nu erau chestile astea in php ..deci e cam old school.. mie sincer nu mi-a placut am preferat sa imi fac ceva mai simplut ca sa stiu tot )

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mie Mai 19, 2010 10:19 pm

inca 2 linkuri bune...
http://en.wikipedia.org/wiki/Model–view–controller
si din el am ajuns la
http://www.aspiringcraftsman.com/2007/0 ... hitecture/
care este mult mai detaliat si bun de tinut minte...
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

http://i.imagehost.org/view/0097/5_11

Mesajde lucian0308 » Mie Mai 19, 2010 10:24 pm

Daca mi le dai in engleza nu imi foloseste
mai bine o carte si e mult mai bine structurata.

As prefera in romana,

Am o intrebare link-ul din subject ca e imagine

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mie Mai 19, 2010 10:30 pm

lucian0308 scrie:Legat de mvc
Cand folosesti MVC care mai e scopul unui template engine gen smarty
sau la ce se mai foloseste , dc....

da corect din ce am mai citit am vazut ca sunt mai multe
desigur in cazul de fata google nu prea foloseste.


exemplu, pe partea de viewer poti avea un GUI care se poate afisa direct generand aceeasi pasi la fiecare proces sau printr-un sistem de Template engine care sa elimine tot procesul efectuat in controler si sa genereze o pagina din cache (pentru pagini statice)

un tutorial de template engine ai aici nu e neaparat necesar smarty - aici ai o lista cu 25 de template-engine

deci in sistemul MVC partea de viewer o pasezi la template-engine care se ocupa el mai departe de cache si de afisare (logica ar fi ca la fiecare cerere controlerul sa verifice daca e pagina ceruta in cache si daca nu e atunci sa faca partea de logica si interpretare a datelor si sa paseze rezultatul la template-engine)
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mie Mai 19, 2010 10:37 pm

suze ca deschid mai multe posturi...

cum vad eu o aplicatie structurata ar fi asa

1. se trimite cererea de la browser la server
2. serverul cere pagina si aici intervine controlerul
3. controlerul verifica daca pagina ceruta e in cache
4. daca e o paseaza la browser si termina treaba
5. daca nu e face procedeul clasic al controlerului preia datele de la model si le prelucreaza pentru a le trimite la viewer
6. la viewer intervine template-engine care genereaza cache si/sau trimite pagina prelucrata la browser

o structura logica am desenat demult aici (cand prezentam structura interna a cms-ului meu)

Imagine
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

http://i.imagehost.org/view/0097/5_11

Mesajde lucian0308 » Mie Mai 19, 2010 11:04 pm

Am inteles

si referitor la intrebarea de mai sus

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: http://i.imagehost.org/view/0097/5_11

Mesajde Birkoff » Joi Mai 20, 2010 12:06 am

lucian0308 scrie:Am inteles

si referitor la intrebarea de mai sus


pai eu zic ca raspunsul corect e "The Chain Of Command/Responsability Pattern" si cred ca are legatura cu asta
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.


Înapoi la “PHP Avansat”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 2 vizitatori