11.5.09

bez odjeka


Prije 10ak godina CMS sustavi na webu su bili prava rijetkost i nisu bili baš dostupni širokim masama. Ako ste željeli svoju stranicu učiniti promjenjivom i zanimljivom morali ste joj dodati poneku skriptu kao što je knjiga gostiju ili brojač posjeta. Oni koji baš i nisu programeri bi na internetu našli odgovarajuću skriptu i dodali ju na svoju stranicu i eventualno prilagodili. Oni na koje ovaj blog cilja, programeri, bi u perlu ili php-u ili nekom drugom jeziku sami napisali skriptu koja npr iz datoteke ili baze čita broj posjeta uvećava ga za 1 i ispisuje na stranici. U PHP-u je za ispis naravno korištena naredba
echo. Vrijeme brojača posjeta i knjiga gostiju je odavno prošlo a zamijenili su ih blogovi, chatovi i slične stvari, a je li prošlo vrijeme za naredbu echo?

Ako ne pravite aplikaciju već svoju stranicu želite osvježiti nekom dodatkom dodavanje promjenjivog sadržaja naredbom echo je sasvim u redu. Ako radite neku kompliciraniju web aplikaciju ili imate puno koda prvo što ćete primijetiti kako se vrlo teško snalazite sa isprepletenim HTML-om i kodom. Rješenje je odvajanje PHP koda od HTML-a. Ovo je često lakše reći nego učiniti. Ideja je da se sve što je potrebno za prikaz stranice povuče iz baze i obradi pa se onda npr stranica sa HTML-om jednostavno includa. Naravno HTML stranica u tom slučaju sadrži i par naredbi echo. Ovo sam po sebi nije strašno ali se stvari počinju komplicirati kada neke dijelove stranice prikazujete uvjetno što zahtjeva
if naredbu u HTML dokumentu. If obično zahtjeva zatvorenu zagradu u nastavku stranice. Slično, ako planirate prikazati tablicu vjerovatno trebate for ili sličnu petlju. Opet dolazi do ispreplitanja HTML-a i PHP koda, ali u manjoj mjeri. Zaobilazno rješenje je da dijelove HTML koda "upucate" u varijablu pa je echo-ate u HTML. Ako sa dio stranice ne prikazuje onda je, naravno, varijabla prazna.
Ovo dovodi do još većih komplikacija. Sada je potrebno HTML tagove pisati u PHP kodu, pojavljuju se navodnici koje treba escape-ati ... Sve u svemu umjesto PHP-a u HTML-u dobivamo HTML u PHP-u. Jedini izlaz iz ovoga je templating engine kao što je Smarty. Ja sam se njime vrlo dugo koristio i meni se sviđa naročito što podržava plugine i filtere. Međutim kada sam otkrio XSLT zaboravio sam sve ostalo jer sam u njemu prepoznao ono što mi je oduvijek trebalo za pravi razvoj stranica.

Smisao XSLT je da jedan XML dokument pretvara (transformira) u drugi preko trećeg XML dokumenta. Vjerovatno se pitate što mi ovakva glupost pomaže pri izradi mojih stranica? Pa ovako, vaša HTML stranica je XML dokument koji je rezultat gornje transformacije. XML dokument koji transforimra je template koji vrlo nalikuje na HTML dokument kojem je dodano par xsl tagova koji određuje kako će se stranica prikazati i kakvi će podaci biti na njoj. Treći XML dokument, koji se transformira, su podaci. Znači umjesto generiranja nekakvih stringova koje kasnije sastavljate sa fiksnim HTML kodom, kod XSLT-a generirate XML dokument sa podacima, ovaj dokument "uparite" sa templateom i rezultat je HTML stranica.

Prednosti ima bezbroj, ne morate pisati HTML tagove ručno, u potpunosti je odvoje HTML od koda, izlazni dokument je otporniji na XSS napade jer XSLT procesor enkodira ulazne podatke... Dreamweaver kao i ostali HTML editori podržavaju uređivanje XSL dokumenata. Što je najljepše ako u dreamweaveru na XSL template "zakačimo" testni XML sa podacima možemo čvorove sa podacima direktno dodavati u termplate drag and dropom. Znači da web dizajneri mogu raditi svoj podao bez saplitanja o kod a programeri raditi svoj posao ne vodeći ni jedan posto računa o konačnom izgledu stranice. A za kraj Može se kompletno promijeniti izgled stranice ili umjesto HTML generairati PDF ili Excell ili neki drugi tip dokumenta bez ikakvih izmjena koda. Potrebno je naravno upotrijebiti drugi XSLT procesor.

6.3.09

Zašto PHP?


Koje su alternative?


Danas postoje mnogi alati u kojima se mogu brzo i jednostavno napraviti solidne internet stranice/internet aplikacije. Ovdje prednjači Microsoft sa svojom ASP.NET tehnologijom. Moram priznati da se i sam ponekad iznenadim kako se u Visual Studiu mogu brzo napraviti vrlo upotrebljive stvari. Na druge tehnologije kao što je Java ColdFusion i slične neću trošiti puno riječi jer nisu toliko široko u primjeni kao ove dvije. Sve su ovo sigurno odlični alati za izradu weba, samo treba odabrati onaj koji nam najviše odgovara.


Kako ću pronaći pravi alat za sebe?


Moramo biti svjesni da sam alat za sebe neće ništa pametno uraditi ako se mi ne potrudimo. Znači ako ja sa wizardom "izgeneriram" neku aplikaciju ili stavim neku "čarobnu" kontrolu i tu se završava moj posao najčešće ću dobiti neupotrebljiv poluproizvod. Ako želimo dobiti pravu stvar i aplikaciju koja u ispunjava potrebe klijenta i u potpunosti prati poslovnu logiku moramo se dooobro potruditi. U tom slučaju će nam trud uložen u programiranje wizardom izgeneriranog dijela biti manji od prepravljanja ili customiziranja, a u završnici ćemo imati upravo ono što nama treba. Uz druge programske jezike dolaze alati koje nude čuda, ali se tih čuda brzo zasitimo i dođemo do realnosti a to je kodiranje. Ne želim reći da je PHP bolji jezik od npr ASPa, JSPa ili Phytona ili bilo kog drugog jezika/alata. U svakom od njih se može napraviti prava stvar samo se treba dobro potruditi.
Svakako moram primjetiti da je PHP zastupljen na najviše platformi, podržava najviše baza i izvršava se najbrže/troši najmanje resursa. Također, što je vrlo važno, od prvog dana je usmjeren samo na web pa nije opterećen nepotrebnim stvarima kao VB ili C#. Nekom možda neće odgovarati što se još uvijek ne kompajlira nego se radi o interpreteru. Meni je to prednost jer tako se mogu koristiti nekim trikovima kao što su npr "variable variables" ili "variable functions". Znam da ovi trikovi nisu uvjek najbolja programerska praksa ail mi često omogućuju da efikasno, sa malo koda vrlo brzo riješim neke stvari za koje mi u drugim jezicima treba puno više...
I na kraju ne zaboravimo srodstvo sa C om koji je majka svih modernih jezika. Nije za zanemariti ni ogromna zajednica ljudi koja će vam rado pomoći bez ikakvog interesa te gomile pesplatnog koda i ekstenzija što ćete rijetko naći na drugim platformama.