|
PHP PHP aplikacije, Smarty, PEAR |
|
Alati teme | Način prikaza |
27. 11. 2005. | #1 |
expert
Expert
Datum učlanjenja: 27.11.2005
Poruke: 543
Hvala: 47
57 "Hvala" u 31 poruka
|
PHP Stilovi pisanja aplikacija (Best design practices)
Ovaj thread sam bio pokrenuo na [es], ali posle dve nedelje je ostao nezapazen, pa sam morao da intervenisem da bih nekom iscupao odgovor. Dobio sam PM od jednog korisnika da postavim isto pitanje na ovom forumu jer tu ima strucnijih korisnika PHP-a.
-- Zeleo bih da se malo razvije diskusija na ovu temu. Zanima me koje sisteme za kodiranje koriste neki od programera koji svaki dan zive sa PHP-om (i zaradjuju 'leba od toga). Voleo bih i da cujem njihovu evoluciju ka savrsenijem kodiranju. Postoje sledeci nacini: 1) PHP embedovan u HTML kod i preklapanje PHP i HTML koda (ono sto svako na pocetku radi, uzas zivi) i kodira se svaka stranica za sebe sa pomocnim funkcija koje odradjuju deo posla Kôd:
<html> <?php if ($param == "nesto") { ?> <p>Prosledjen je parametar <?php echo $param ?> </p> <?php }else { echo "<a href=\"stranica.php?param=1¶m2\"><img src=\"slika.jpg\"></a>"; } 3) Koriscenje nekog od Template Engine-a (FastTemplate, Smarty, patTemplate, Flexy... ) i razdvajanje Logike od Prezentacije 4) Koriscenje MVC programskog modela u kombinaciji sa nekim od TE. Ovo poslednje me je malo zainteresovalo... Naime, skinuo sam source kod galerije slika "Gallery 2" i malo sam ga analizirao (bolje reci izgubio ceo vece na to)... I mogu reci da mi se dopada. E, sad, ne znam koliko je taj pristup dobar za neke manje projekte i isplati li se upotrebljavati ga za jednokratne projekte. Plasi me pomalo odluka da pocnem da navikavam mozak na tako nesto jer sam jako dobro usavrsio model programiranja koji koristim vec neke 3 godine. Mozda je strah neopravdan jer sam slican otpor imao pri prelasku sa FastTemplate-a na Smarty, ali sam video da sam usporio sebe zbog oklevanja. Elem, sada koristim sledeci sistem: Nad svakom tabelom/logickim blokom (clanci, korisnici, inventar i sl.) imam jednu skriptu koja upravlja tim podacima. Npr. skripta se zove adm-inv.php U skripti imam 4 najcesce funkcije: inv-new() inv-edit() inv-save() inv-delete() Preko GET/POST metoda prosledjujem parametar "command" koji je == "new|edit|save|delete" i pozivam ove metode sa $func = "inv-$command"; $func(); Lepo sam napisao pomocnu skriptu koja generise adm-inv.php, adm-nesto_drugo.php i sl. posto sve skripte imaju istu strukturu. Kad dobijem kostur, onda uzmem npr inv-list() i dopisem Kôd:
$rs = $conn->Execute("SELECT * FROM inv ORDER BY id"); while (!$rs->EOF){ $inv[] = $rs->fields; } $smarty->assign("inv", $inv); $smarty->display("inv-list.tpl"); Za pristup bazi koristim AdoDB. Nisam opterecen OO programiranjem vec koristim proceduralno programiranje. Nekako je brze. :-) Takodje, ne koristim ni PEAR zbog (jos uvek) lose dokumentacije vec se snalazim sa pomocnim klasama ili napisem ponesto za svoje potrebe. Ako neko ima neke savete ili zeli da podeli svoja iskustva, neka slobodno uskoci sa primerom. |
27. 11. 2005. | #2 |
Ivan Dilber
Sir Write-a-Lot
|
pa meni se cini da ako su ti php skripte takve da mozes da ih generises, onda nema potrebe da imas zasebne (generisane) skripte, nego samo jednu glavnu skriptu kojoj ces da menjas parametre...
|
27. 11. 2005. | #3 |
profesionalac
Professional
|
I ja za bazu koristim ADOdb (za prostije projekte ADOdb Lite)
Trenutno koristim Smarty, al bi voleo da se bacim na MVC, sprecava me samo manjak vremena za ucenje... |
27. 11. 2005. | #4 |
Goran Pilipović
Sir Write-a-Lot
|
Ja imam svoje razradjene i proverene klase koje sam pisao godinama za razne projekte i samo njih koristim. Jedina je razlika da li cu da koristim smarty ili ne.
I kod cistog php postoji nekoliko metoda rada, jos nisam odlucio koja mi najbolje lezi jer i to zavisi od tipa projekta. Poslenji sajt koji sam odradio je ceo je jednom fajlu, + .htaccess i mnogo include. Trudim se da vece html blokove cuvam kao html, dako jedan ili 2 reda html-a obicno radim sa: echo "<div id=blabla>".$test."</div>"; I jos uvek su mi svi projekti kompatibilni sa php4 (osim par sitnih izuzetaka)
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
27. 11. 2005. | #5 | |
expert
Expert
Datum učlanjenja: 27.11.2005
Poruke: 543
Hvala: 47
57 "Hvala" u 31 poruka
|
Citat:
Elem, procitavsi clanke o MVC-u http://www.onlamp.com/pub/a/php/2005...mvc_intro.html i http://www.onlamp.com/pub/a/php/2005...ontroller.html rekoh da se bacim na izucavanje MVC-a. I, cini mi se da sam uhvatio odakle treba da krenem, ali nikako da napravim nesto... Postoji gomila MVC Frameworka, ali su svi PHP5 specificni. Jedini framework koji je PHP4 specifican je Phrame. I taman da pocnem da ga ucim, likovi izbacili v3 koja je "E do mojega"... So, ima li neko iskustva sa nekim MVC Framework-om? |
|
27. 11. 2005. | #6 | |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
Citat:
Ja koristim sopstveni MVC framework (klasičan MVC, Propel i par trikova pokupljenih od Ruby on Rails, modularan - stvarno povećava produktivnost). Može se opisati kao križanac RoR i Symfony frameworka sa modulima MVC je deifinitvno pravi izbor za sve veće od prosečne news skripte. MVC može da bude implementiran jako jednostavno, čak i u PHP4 - da radi brzo, da su aplikacije jednostavne za pravljenje i održavanje. PS: Razlog zašto je ogromna većina frameworka PHP5 specifična je u tome što su programeri koji koriste OOP za kompleksnije modelovanje aplikacija odavno migrirali na isti. Jako malo ljudi za koje se može reći da su PHP gurui koristi PHP4 kao primarnu razvojnu platformu.
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog Poslednja izmena od Ilija Studen : 27. 11. 2005. u 21:51. |
|
28. 11. 2005. | #7 |
Ivan Dilber
Sir Write-a-Lot
|
Jedno pitanje oko MVC kad je vec krenula prica u tom smeru...
Imam malih nedoumica oko View-a, jer bi mi se jako dopalo da ga skroz zatvorim u templejte endzine (a Kontroler da mi bude u php skripti, pa da budu bas razdvojeni). Ali opet od View-a se ocekuje da on sam trazi od Modela sve podatke koji mu trebaju, a nije mi zgodno da mi se u templejtima pojavlju pozivi funkcija kao moj_model->selektuj_blogove ili nesto slicno, jer one ne prikazuju same podatke nego ih samo spremaju da se prikazu (urade SELECT i vrate rezultate recimo). Ja bih da mi u templejtu bude samo funkcije koje nesto ispisuju, a da se detalji oko komunikacije sa modelom sklone iz templejta. Ali to onda opet znaci da mi se View logika mesa u skripti sa Kontroler logikom. Kako vi to organizujete? |
28. 11. 2005. | #8 |
Python Ambassador
Master
|
Tehnički, klasičan MVC (pričamo o SmallTalk definiciji istog) nije preterano primenljiv na webu jer je http connectionless te se neke bitne stvari vezane upravo za Views ne daju primeniti.
Malo mi je kasno (ili rano) pa ne mogu naći direktan link - ono što te interesuje je "MVC 2" (tako ga je Sun krstio), na netu možeš naći i više nego što želiš o istom Mada ti savetujem da kreneš od www.sun.com
__________________
Python Ambassador of Serbia |
28. 11. 2005. | #9 |
Ivan Dilber
Sir Write-a-Lot
|
mislis na Javin Model 2, znam ja za to...
procitao sam dosta teorije o tome, nego mi malo fale tudja real-life iskustva oko najprakticnijeg pristupa, zato sam pitao... Nedavno sam gledao Cake framework i recimo oni ne implementiraju MVC kako treba, jer kod njih kontroler prikuplja podatke pa ih daje View-u na koriscenje. Takav pristup mnogo direktnije odgovara kombinaciji php + templejt endzine (php je kontroler, a templejti su view), ali to nije onda nije pravilan MVC model. Inace jako puno ljudi na netu potpuno pogresno tvrdi da je to MVC (u masi tutorijala to mozes da procitas) i koliko sam video nekoliko mainstream framework-a koristi bas takvu "nepravilnu" implementaciju.. Pretpostavljam da se u MVC insistira da View uzima sam svoje podatke od Model-a sa razlogom, valjda da bi se izbeglo da promenom View-a mora da se menja i Kontroler. Medjutim to je ok za klasicne aplikacije koje cele rade programeri, pa nije strasno ako ti u View-u imas par upita nad bazom, ali meni to pravi problem sa dizajnerima, jer ne zelim da oni osete rad sa bazom. Idealno bi bilo da oni mogu samo u templejtu da kazu: prikazi mi taj podatak i to je to, bez SELECT-FETCH-PRINT medjukoraka. Ali takodje bi bilo super da cisto iz templejta moze da se pridje svim potrebnim podacima, bez potrebe da ih ja unapred dovlacim iz Modela u glavnom php kodu. Poslednja izmena od ivanhoe : 28. 11. 2005. u 09:58. |
28. 11. 2005. | #10 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
Statika?
PHP kôd:
PS: Da li sve mora (može?) da bude po knjizi?
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog Poslednja izmena od Ilija Studen : 28. 11. 2005. u 11:59. |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
TOP 20 MySQL Best Practices | dinke | SQL baze podataka - Sponzor: Baze-Podataka.net | 11 | 26. 11. 2009. 10:26 |
PHP multilanguage web - best practices | mb_sa | PHP | 14 | 29. 10. 2009. 12:10 |
[pomoc] Font Embedding, razliciti stilovi na istom textfieldu | MrSteel | Flash | 5 | 11. 08. 2007. 16:09 |
Performance Tuning Best Practices for MySQL | Ilija Studen | SQL baze podataka - Sponzor: Baze-Podataka.net | 1 | 13. 08. 2006. 16:20 |