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> 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"); 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. |
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...
|
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... |
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) |
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? |
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 :D 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. |
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? |
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 |
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. |
Statika?
PHP kôd:
PS: Da li sve mora (može?) da bude po knjizi? |
Vreme je GMT +2. Trenutno vreme je 17:25. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.