DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
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
Staro 27. 11. 2005.   #2
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

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...
ivanhoe je offline   Odgovorite uz citat
Staro 27. 11. 2005.   #3
Bojan Zivanovic
profesionalac
Professional
 
Avatar Bojan Zivanovic
 
Datum učlanjenja: 06.06.2005
Lokacija: Pančevo - Pariz
Poruke: 287
Hvala: 6
8 "Hvala" u 8 poruka
Bojan Zivanovic is on a distinguished road
Pošaljite poruku preko Skype™ za Bojan Zivanovic
Default

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...
Bojan Zivanovic je offline   Odgovorite uz citat
Staro 27. 11. 2005.   #4
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

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!
bluesman je offline   Odgovorite uz citat
Staro 27. 11. 2005.   #5
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
Default

Citat:
Originalno napisao ivanhoe
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...
Pa, u pravu si... Za vecinu poslova samo se par parametara razlikuje. Sve to moze da bude jedna skripta. Elem... Ipak volim da imam razlicite skripte za razlicite tabele/akcije. Ako niste do sad pogledali 15" uvod u Ruby On Rails, pogledajte. Lik je otprilike mukom dosao do istog. Generise samo kostur aplikacije i doda po neki specificni kod...

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?
ppavlovic je offline   Odgovorite uz citat
Staro 27. 11. 2005.   #6
Ilija Studen
Direktor Kombinata
Invented the damn thing
 
Avatar Ilija Studen
 
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
Ilija Studen će postati "faca" uskoroIlija Studen će postati "faca" uskoro
Default

Citat:
Originalno napisao ppavlovic
So, ima li neko iskustva sa nekim MVC Framework-om?
Za PHP4 pogledaj Cake. Što se PHP5 tiče baci pogled na Symfony (artiljerija?).

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.

Poslednja izmena od Ilija Studen : 27. 11. 2005. u 21:51.
Ilija Studen je offline   Odgovorite uz citat
Staro 28. 11. 2005.   #7
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

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?
ivanhoe je offline   Odgovorite uz citat
Staro 28. 11. 2005.   #8
Petar Marić
Python Ambassador
Master
 
Avatar Petar Marić
 
Datum učlanjenja: 06.06.2005
Lokacija: Novi Sad
Poruke: 602
Hvala: 28
27 "Hvala" u 17 poruka
Petar Marić će postati "faca" uskoro
Pošaljite ICQ poruku za Petar Marić
Default

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
Petar Marić je offline   Odgovorite uz citat
Staro 28. 11. 2005.   #9
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

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.
ivanhoe je offline   Odgovorite uz citat
Staro 28. 11. 2005.   #10
Ilija Studen
Direktor Kombinata
Invented the damn thing
 
Avatar Ilija Studen
 
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
Ilija Studen će postati "faca" uskoroIlija Studen će postati "faca" uskoro
Default

Statika?

PHP kôd:
<ul>
<?php foreach(BlogPeer::getRecentEntries(5) as $entry) { ?>
  <li><?= clean($entry->getTitle()) ?></li>
<?php ?>
</ul>
Ako koristiš Propel proširiš Peer klasu i voziš.

PS: Da li sve mora (može?) da bude po knjizi?

Poslednja izmena od Ilija Studen : 28. 11. 2005. u 11:59.
Ilija Studen je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

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


Vreme je GMT +2. Trenutno vreme je 11:00.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.