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 31. 12. 2006.   #1
_blob_
novi član
 
Datum učlanjenja: 30.12.2006
Lokacija: Kula
Poruke: 6
Hvala: 0
0 "Hvala" u 0 poruka
_blob_ is on a distinguished road
Lightbulb Domaci Smarty-Lite za PHP5 !

Pozdrav svima,
evo tek sam otkrio vas forum pa da se ukljucim...

vec jedno vreme razvijam i koristim klasu za Templejting pa me interesuje vase misljenje. To je tip klase koja treba svakom PHP programeru.
Pitanje je samo kakve covek zahteve pred kod postavlja...

evo sta moja klasa trenutno moze:

(requirements: >= php 5.0)

features:

- vise Reporta u jednom template file-u, kao i slanje dodatnih parametara Report-u

Kôd:
  <!-- report name="radnik" params(break="id" a="1" b="2") begin -->
   ...html...
  <!-- report name="radnik" end -->
- Banded Reports: (Header, Detail, Detail_Empty, Footer...)
- prosledjivanje vrednosti tokena u klasu funkcijom assign() koja podrzava i nizove (koji se onda ispisuju u Detail bandu)
(Ponavljanje redova ako postoje vise stavki za isti podatak pomocu Detail i Detail_Empty band-ova)
- IF THEN ELSE uslovi, u kojima se mogu koristiti promenjive koje prosledite template-u
(podrzane operacije: ==, ===, !=, is true, is false, is odd, is even itd itd)

Kôd:
<!-- detail begin -->
<!-- if ( $id is odd ) -->
   <font color="#ff0000">
<!-- else -->
  <font color="#0000ff">
<!-- endif -->
    (%id%) :: Rbr: (%nr%)  Vreme Ulaska: (%datum%) Kolicina: (%kol%) <br>
</font>
<!-- detail end -->
- podrzani su filteri ze tokene: (kao u Smarty-ju)
Code:
(%imetokena:raw%) (%imetokena:upper%) (%imetokena:lower%) (%imetokena:ucwords%)
ili recimo nohtmlentities() za vrednost tokena: (%imetokena:nohtml%)

- Klasa sama racuna zbirove i proseke za polja koje korisnik odredi i te vrednosti se mogu ispisivati, u Detail i u Footer Bandovima:

Kôd:
  (%count.id%) 
  (%sum.kol%)
  (%avg.kol%)
klasa podrzava i jos mnogo toga, proverite sami ako vas zanima...
mogla bi se lako prevesti u PHP4 ali to ostavljam nekome drugome.
u zip arhivi imate klasu, kao i primer upotrebe sa jedim templejt fajlom.

p.s.
od nove godine krecem sa Open Source razvojem ove klase, razbicemo smarty
ako imate predlog za ime klase, javite!!!
razmisljam o Intuition Template Engine ili nesto tako...

ajde da cujem neka misljenja (pozitivna ili negativna) samo da pomera...

sretni praznici!
pozdravlja vas UncleBlob
Priloženi fajlovi
Tip fajla: zip MyTemplateClass_rc1.zip (5,0 KB, 1031 pregleda)
_blob_ je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #2
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

Koje su prednosti? Konkretno u odnosu na Smarty, a onda i u odnosu na klasične PHP fajlove omotane template klasom?

Btw, ne bih se zanosio sa "razbijanjem" - Smarty postoji jako dugo, veliki broj developera ga koristi aktivno, a još veći ga je ili ranije koristio ili tačno zna o čemu se radi. Dokumentacija je dosutpna i razrađena itd itd itd. Da ne smaram sa detaljima. Malo sam skeptičan
Ilija Studen je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #3
_blob_
novi član
 
Datum učlanjenja: 30.12.2006
Lokacija: Kula
Poruke: 6
Hvala: 0
0 "Hvala" u 0 poruka
_blob_ is on a distinguished road
Exclamation

hm, prvo pozdrav i hvala na feedback-u!

sto se tice prednosti moje klase ima ih puno:

0. lightweight! klasa je jedan fajl <=20k koda (a Smarti je ipak puno 'tezi')
1. intuitivno i krajnje prosto za koristiti
2. ima sve sto vecina ljudi koristi kod Smarty-ja...
3. (nema sve ono sto smarti ima ali ionako niko ne koristi)
4. podrzava ono sto Smarty nema: banded reports pristup (nije obavezno ali podrzava) pogledaj primer uz klasu za demonstraciju tog pristupa...
ako je neko koristio QuickReport, ReportBuilder ili CrystalReports zna o cemu
pricam, vrlo bitno za sve 'poslovne' aplikacije tj. za izvestaje...
Smarty ima ovo ali je totalni hack, komplikovano za podesiti a jos i ne radi..
5. klasa se jos uvek razvija i mozemo je srediti tako da ispravi sve mane koje drugi template sistemi imaju
6. lako je moguce je reci klasi da na kraju obrise sve neparsove templejte (ovo ima i Smarty ali je komplikovano za postici)
6. nasa je (i nije svetska)

itd itd...
da sad ne smaram previse... a i subjektivan sam....

moja ideja je da cimnem ljude odavde i da zajedno poguramo projekat i napravimo templating engine vredan hvale...

ali ne mogu sam...

ako je neko zainteresovan neka se javi...

do tada skinite primer i klasu i probajte i pitajte sta vas zanima...
ako neko ima feature request samo recite...

..

a ono o razbijanju Smarty-ja je bila cista shala... to mi uopste nije namera... hocu da napravimo nesto sto je mocno kao Smarty a opet je mnogo prostije i lakse za upotrebu...

ok, ajd da vas cujem sad...
poz
Uncle Blob
_blob_ je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #4
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

hm, malkice me ovo podsetilo na Template Toolkit za perl , jel to slucajnost ?

Uzgred, nisi pomenuo vrlo bitnu stvar, jesu li templejti kompajlirani kao smarty ili se evaluiraju svaki put ?
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #5
Berislav Lopac
profesionalac
Qualified
 
Datum učlanjenja: 18.11.2006
Poruke: 140
Hvala: 0
16 "Hvala" u 10 poruka
Berislav Lopac is on a distinguished road
Default

Smarty, kao i svi drugi templejting sustavi koji koriste neku svoju sintaksu su totalno bez imalo smisla u PHP-u. Evo zašto: http://www.massassi.com/php/articles/template_engines/
Berislav Lopac je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #6
zira
Vladan Zirojević
Grand Master
 
Datum učlanjenja: 09.06.2006
Lokacija: Beograd/Trebinje
Poruke: 903
Hvala: 106
183 "Hvala" u 82 poruka
zira ima spektakularnu auruzira ima spektakularnu auruzira ima spektakularnu auru
Pošaljite ICQ poruku za zira Pošaljite poruku preko Skype™ za zira
Default

Slazem se sa Berislavom, po cijenu da me Smarty zaljubljenici razapnu. Jasne su mi prednosti koje takav sistem daje dizajnerima, ali mislim da je sve to moguce sasvim lijepo uraditi u PHPu samom. Osim u nekim slucajevima, kada se ne smije izvrsavati PHP u templejtu (visekorisnicki CMS npr)
__________________
Donesi.com SrediMe

Poslednja izmena od zira : 31. 12. 2006. u 02:31.
zira je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #7
Peca
Super Moderator
Knowledge base
 
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
Peca će postati "faca" uskoroPeca će postati "faca" uskoroPeca će postati "faca" uskoro
Default

ja koristim EasyTemplate - http://www.onlinetools.org/tools/easytemplate/
Vrlo jednostavan, mali, i brz.
Naravno, nije ni blizu Smarty-ju, ali sve moje potrebe zadovoljava... i sve projekte baziram na njemu.
__________________
Vesti | MyCity | Igrice | Zaštita od virusa
Peca je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #8
_blob_
novi član
 
Datum učlanjenja: 30.12.2006
Lokacija: Kula
Poruke: 6
Hvala: 0
0 "Hvala" u 0 poruka
_blob_ is on a distinguished road
Default

hm, zaista nisam nikada cuo za Template Toolkit... provericu i to da vidim ima li tu nekih dobrih ideja...

sto se tice kompajliranja templejta i kesiranja to nisam ubacio ali planiram...
zato sam i pokrenuo ovo da sa nekim podelim teret razvoja i novih ideja...

e sad sto se tice teze da su templejti sa svojom sintaksom: "...totalno bez imalo smisla u PHP-u.." to je vrlo jednostrano glediste na celu stvar (bez uvrede)

znam za clanak o besmislenosti templejtinga za PHP ali ne uzimam ga zdravo za gotovo...
Moj stav je da je taj clanak vrlo ozbiljan u svojim tvrdnjama ali nije univerzalno tacan.

U nekim slucajevima je besmisleno uvoditi template engine u PHP koji je sam po sebi template engine u neku ruku...
(ovo vazi za prostije aplikacije, ili one kod kojih izgled nije previste bitan ni kompleksan. takodje ovo vazi za aplikacije kojima se nece kasnije menjati dizajn itd itd.)

ali ako imate ozbiljniju aplikaciju, koja treba lepo da izgleda, i ima puno razlicitih strana, i pritom dizajneri rade HTML a programeri koriste njihov HTML da bi sklapali aplikaciju...
E tu cela prica o pogresnosti templatinga apsolutno pada u vodu...

recimo ako PHP programer pravi sajt sa 2 HTML dizajnera...
on im objasni kako templating funkcionise i oni naprave izgled celog sajta, svih strana, u cistom HTML-u.
programer ucita HTML templejte u HTML editor, SAMO doda tagove i komentare u HTML da bi povezao logiku prikaza sa PHP skriptom, pritom ne menjajuci HTML.
i sve to sklopi i sve radi...
kasnije ako treba izmeniti izgled svega, dizajneri otvore te HTML templejte u HTML editoru i ne menjajuci skrivene tagove samo izmene izgled i to je to...

u praksi to funkcionise savrseno i nema po meni boljeg nacina...

sustina je u sledecem: templating pristup omogucava da HTML templejt (otvoren u HTML editoru) izgleda BAS onako kako ce izgledati i strana.

a ovi PHP templejti ne izgledaju isto kada se otvore u Dreamweaweru i kada ih konacno prikazete.
A to je blago receno uzas.

ja sam cak kada sam poceo razvijati ovu klasu odlucio da NECE BITI NIKAKVE LOGIKE u samom html-u ali sam posle uvideo da to jednostavno nije efikasan pristup.

primer:

u MySql bazi imate spisak licenci za neki softver, pritom su neke aktivne a neke 'neaktivne'.

zahtevi:
- prikazati sve licence na jednoj HTML strani, pritom na desnoj strani svake licence su opcije za status licence. Kod aktivnih je moguce kliknuti link 'DEAKTIVIRAJ' (link za aktivaciju je samo obican tekst) a one licence koje su neaktivne imaju link AKTIVIRAJ (dok je link deaktiviraj u stvari sam tekst koji se ne moze 'kliknuti')

e sad ako nema mogucnosti ubacivanje logike u templejt, onda je to pakao...
ako ima, proces je lagan:
ucitam sql upitom sve licence, i ispisem ih pomocu moje klase i jednog HTML templejta, a u templejtu imam logiku:

Kôd:
<!-- if ( $active is true ) -->
   <a href="deaktiviraj.php">DEAKTIVIRAJ</a>
<!-- else -->
  DEAKTIVIRAJ
<!-- endif -->
a odmah iza toga:
Kôd:
<!-- if ( $active is false ) -->
   <a href="aktiviraj.php">AKTIVIRAJ</a>
<!-- else -->
  AKTIVIRAJ
<!-- endif -->
e sad prednosti ovoga su sto je lako postici zeljeni rezultat, a pritom HTML templejt u editoru izgleda bas onako kako ce izgledati i sama stranica kada se prikaze u browseru.

a to je nemoguce postici sa pristupom da PHP sam radi templejting.
takav html templejt kada otvoris u editoru NE IZGLEDA isto kao kada ga prikazes na stranici...

ima tu jos problema ali jedno je sigurno:
Templejting ima smisla. NE UVEK! ali ima smisla.
suprotan pristup ignorise praksu.

e sad ako neko misli da gresim, dajte konkretne primere pa mi otvorite oci, bice mi drago da naucim nesto novo...

pritom vas molim da ovo ne bude novi flame-war...
samo konstuktivno...

pozdravlja vas
UncleBlob
_blob_ je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #9
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

Slažem se da templatei imaju smisla u izvesnim situacijama, ali te situacije su stvarno retke i uglavnom se svode na slučajeve kada želiš da ograničiš kontrolu krajnjim korisnicima (templatei koji se edituju iz administracionog panela i tome slično). Primer za takav pristup su templatei unutar Textpatterna.

Tvrdnja da stranica izgleda istovetno kada se gleda njen template i kada se parsira i popuni podacima pije vodu SAMO u retkim slučajevima kada se radi prost output i kada nema puno logike na stranici. Na primer, tvoj kod sa Aktiviraj linkom će outputovati jedan link i jedan prost tekst kada ga otvoriš u Dreamweaveru (ili drugom alatu po izboru) ili ti poduplaće sadržaj

Ne znam za tvoja iskustva, ali templatei sa kojima radim su uglavnom puni prezentacione logike i jednostavno ih je nemoguće uređivati u nekom vizuelnom alatu. Čak i ako se odlučiš da koristiš naprednije mogućnosti template enginea (blokovi, modifikatori, funkcije itd) to Dreameweaver neće umeti da prikaže i na mestu recimo User profile bloka će stajati prazan prostor.

Znači, cela priča o tome da se templatei isto vide u vizuelnom alatu kao što stranica treba da izgleda pada u vodu u 95% slučajeva.

Dalje, kolaboracija između dizajnera i developera je overrated argument pošto jer je nivo kompleksnosti prostih PHP fajlova (ako su uljudno formatirani) tek nešto veći od kompleksnosti template engine sintakse. Primer da dizajneri nisu glupe ovce i da se znaju snaći i sa PHP templateima su ti WordPress teme. Ima ih tone i sve su PHP fajlovi. Dalje, nije redak slučaj da dizajner sredi markup i CSS pa da ga programer onda ušnira u kod ili taj posao odrade zajedno. Npr, u zadnjih par projekata gde sam imao dizajnera dobijao sam gotov HTML ili čak samo PSD (na sopstveni zahtev). Dalje je sve bilo na meni...

Uh, mnogo teksta. Uglavnom, template enginei imaju smisla u relativno retkim situacijama. Fleksibilnost koju ti daje PHP je ogromna, ne kravi se editor (jeah, radi code completion i code proposal, editorovi templatei itd), znatno je brže i jednostavnije od template enginea i ako se fino povuče granica između aplikacije i template (rešio problem sa ~50 linija primitivnog koda) nema zime.

Btw, takođe razumem da neki iz navike koriste template engine čak i tamo gde im ne treba. Blagi pad performansi i uvećanje kompleksnosti često nije opravdanje da se odrekneš nečega sa čim se osećaš komforno i kao kod kuće.
Ilija Studen je offline   Odgovorite uz citat
Staro 31. 12. 2006.   #10
zira
Vladan Zirojević
Grand Master
 
Datum učlanjenja: 09.06.2006
Lokacija: Beograd/Trebinje
Poruke: 903
Hvala: 106
183 "Hvala" u 82 poruka
zira ima spektakularnu auruzira ima spektakularnu auruzira ima spektakularnu auru
Pošaljite ICQ poruku za zira Pošaljite poruku preko Skype™ za zira
Default

Citat:
Originalno napisao _blob_
ali ako imate ozbiljniju aplikaciju, koja treba lepo da izgleda, i ima puno razlicitih strana, i pritom dizajneri rade HTML a programeri koriste njihov HTML da bi sklapali aplikaciju...
E tu cela prica o pogresnosti templatinga apsolutno pada u vodu...
Rekoh vec, templejt engine ima smisla u odredjenim situacijama. Ali gornji navod ne pije vodu. Izgled web aplikacije generalno ne zavisi od toga da li ima templejt, a pogotovo ne od toga koji templejt engine.
Moja osnovna zamjerka ostaje da mi se ne dopada, u opstem slucaju, izmisljanje novog jezika za templejt, kada vec postoji PHP. Naciti PHP u mjeri koja je potrebna u templejtu nije nista slozenije od ucenja templejt sintakse, a ima univerzalniju vrijednost.
Druga zamjerka je brzina, pogotovo u "ozbiljnijim" aplikacijama. Stoga, nisam za upotrebu ne-PHP templejta, ukoliko zaista nije potrebno. Time stedis sat vremena dizajneru, a potom na milione puta procesiras te templejtove i dodajes cesto nepotrebnu slozenost.
Naravno, ovo je moj licni stav, mozda ja nisam mjerodavan, posto od alata uglavnom koristim samo tekst editor
__________________
Donesi.com SrediMe
zira 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
Traži se, profesionalna programerska tvrtka PHP5/MySQL/smarty template engine/ jurman Poslovne ponude i zapošljavanje 0 19. 02. 2007. 12:22
Domaci Direktorijumi ? [nq] Marketing i SEO 9 06. 09. 2006. 23:13
Smarty za PHP5 bluesman PHP 5 08. 08. 2005. 23:19
Xtra lite AJAX color picker WinterMute (X)HTML, JavaScript, DHTML, XML, CSS 8 04. 07. 2005. 10:15


Vreme je GMT +2. Trenutno vreme je 12:04.


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.