Pogledajte određenu poruku
Staro 27. 11. 2005.   #1
ppavlovic
expert
Expert
 
Avatar ppavlovic
 
Datum učlanjenja: 27.11.2005
Poruke: 543
Hvala: 47
57 "Hvala" u 31 poruka
ppavlovic će postati "faca" uskoro
Question 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&param2\"><img src=\"slika.jpg\"></a>";
}
2) Koriscenje include-ovanja HTML stranica sa ubacenim promenljivama na odredjenim mestima sa pomocnim funkcijama koje odradjuju deo posla

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");
Slicno vazi i za edit funkciju. Naravno, sabloni inv-list.tpl i inv-edit.tpl generisem automatski na osnovu podataka iz tabele u bazi.

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.
ppavlovic je offline   Odgovorite uz citat