[ _BloB_ @ 08.12.2006. 13:10 ] @
Pozdrav svima,

pratim vec dugo ovaj forum i cini mi se da se malo uspavao...

uglavnom pocetnicka pitanja "kako da ovo" , "kako da ono"...

naravno, nemam ama bas nista protiv takvih pitanja (i sam sam ih nekada ovde postavljao...)

ali hteo bih da pokrenem neku temu koja je aktuelnija, i odatle i ovaj post...

interesuje me da li neko od vas radi u PHP5 i ozbiljno koristi OOP u razvoju.
takodje interesuje me koristi li neko Zend Framework?

ili imate neki svoj framework? ili koristite neki postojeci PHP5 framework (a ima ih mnogo) ???

da cujem vasa misljenja (ako je neko ovde uopste zainteresovan da polemise o ovim pitanjima)...

vasa iskustva...

mozda da zapocnemo nesto... recimo lokalizaciju Zend Frameworka na srpski ili nesto slicno.?

puno pitanja, dosta za sada...

ajde javite se... (ili su svi prezauzeti borbom za opstanak

pozdravlja vas UncleBlob

[Ovu poruku je menjao Goran Rakić dana 12.06.2010. u 14:49 GMT+1]
[ Nemanja Avramović @ 08.12.2006. 14:56 ] @
Ne koristim PHP5, a imam svoj framework... odnosno, nije to još framework, samo set od nekoliko klasa (PHP4). Inače, da, skoro sve radim kroz OOP
[ Davor Grubelić @ 08.12.2006. 15:05 ] @
@JaHvram

jel tajna kakve su to klase. dali bi se to moglo malo pogledat...
ja planiram napravit također svoje klase koje ću koristiti u budućim projektima.
[ Nemanja Avramović @ 08.12.2006. 15:08 ] @
Klase za DB (upravljanje, dump, import), templateove (nešto jednostavno, kad nema potrebe koristiti Smarty), i tako to. Još uvek nisu za javnost, sorry.
[ Davor Grubelić @ 08.12.2006. 15:12 ] @
ma nije bed, pitao sam ovako bez veze.
mogu ja to i sam napisati... :)
[ _BloB_ @ 08.12.2006. 15:49 ] @
To je pravi pristup: napraviti klase za sve ono sto se ponavlja u projektima.
posle samo sklapas..

ja sam imao svoj mini-framework u PHP4 a sada razvijam novi u PHP5 i tek tu se vidi koliko je petica mocnija... sve u vezi objekata je prirodnije i lakse odraditi...

a neke stvari nisu ni radile u PHP4 bez hakovanja...

trenutno imam sledece klase:

- cfg klasa (podesavanja)

upotreba:

- registry klasa (MyRegistry) (ovo je singleton staticka klasa u kojoj cuvam sve druge globalne objekte, tako da su
uvek dostupni svim drugim klasama: tu cuvam objekte cfg, db itd...)

recimo:
Code:

$cfg = MyRegistry::getInstance()->getObject("cfg");
$con = new MyDBConnection(array("host"=>$cfg->db_host,"username" => $cfg->db_user, "password" => $cfg->db_pass, "database" => "blog1"));
MyRegistry::getInstance()->setObject("db",$con);


- login klasa (potpuno konfigurabilna klasa sa kojom u par linija koda mogu ograniciti pristup bilo kojoj stranici, a ako korisnik nije ulogovan, prebaci ga na login stranicu itd...)
- dbconnection, dbresult, dblayer klase
- a od dblayer klase se nasledjuju activerecord i rowpaging klase
- template klasa
- ftp klasa
- file klasa
- curl klasa
itd itd...

ima toga jos...

i kada radim novi projekat samo sklapam kockice...

posebno je zgodno koristiti activerecord. recimo:

Code:

class vesti extends MyDBActiveRecord { } // class

$vest = new vesti();

$r = $vest->findById(1);
$r->naslov = 'Naslov';
$r->telo = "telo nase vesti...";
$r->save();


i tako...

rado cu publikovati izvorni kod svega ovoga ako nekom treba (sem login klase, iz razumljivih razloga)...
mozda da pokrenemo projekat na google.code i nesto zajednicki odradimo i pustimo kao open source...???

ajde da vas cujem...

[ Nemanja Avramović @ 08.12.2006. 17:27 ] @
Rado, ali kao što već napisah, još uvek nisam prešao na PHP5 iz prostog razloga što imam još nekoliko nedovršenih projekata u PHP5 i kako jedan završim tako započnem novi
[ Davor Grubelić @ 08.12.2006. 23:14 ] @
@_BloB_

dali bi mi mogao poslati template klasu, da malo pogledam... ako nije problem.
[ Jezdimir Lončar @ 09.12.2006. 11:05 ] @
Ja koristim manje-vise OOP ali jos nisam presao na php5 jer mi hosting jos ima ovu 4 :( ...
Svoj framework jos nemam ali imam par klasa koje koristim (za db).
P.S. Pozdrav za sve pro developere!!!
Jezdo.
[ m_k @ 09.12.2006. 13:00 ] @
Da neko slucajno nema neki dobar link gdje objašnjen rad sa OOP u php-u (po mogucnosti na nekom od lokalnih jezika)?

Hvala.
[ _BloB_ @ 09.12.2006. 13:43 ] @
@Davor Grubelić

evo templejt klase sve sa uputstvom i sa primerom za upotrebu

http://up-file.com/download/659fbd547959/tt-class.zip.html

mada na tu klasu nisam bas nesto ponosan, ali radi posao..

ne podrzava ugnjezdjene (rekurzivne) templejte i treba je napisati ponovo...

ali kao sto rekoh radi posao...


ajd pa javite kako vam se cini..
sve kritike su dobrodosle...

ima li ko bolju a da moze sve sto i moja

poz
Uncle Blob
[ Jezdimir Lončar @ 09.12.2006. 16:13 ] @
Smarty ?
:)
Evo probao sam klasu, super je...
Malo sam je preradio ba sad ne koristi (% i %) nego { i } .
Uploadovao sam je pa pogledajte...
[ _BloB_ @ 09.12.2006. 17:01 ] @
Extra !!!

samo, ako se ja pitam ta klasa pati od dosta 'decijih bolesti' napisao sam je dosta davno...
voleo bih da vidim neke predloge sta i kako ubaciti...

ono na cemu ja radim, ali nikako da uspem je sledece: rekurzivni ponavljajuci tokeni (parametri):

primer:
u templejtu jedan red tabele KUPAC koji u sebi opet ima red tabele FAKTURA a svaka faktura red STAVKE,
a sve to da se cita iz MySql baze recimo:

templejt bi u najprostijem obliku (bez fancy html-a) izgledao ovako:
Code:

<!-- kupci begin -->
Naziv kupca: (%naziv%)
Broj kupca:  (%id%)

<!-- fakture begin -->
broj fakture: (%id%)
datum Fakture: (%datum%)

<!-- stavke begin -->
Stavka fakture:
nr:(%nr%) artikal: (%artikal%)  kol:(%kolicina%)
<!-- stavke end -->

<!-- fakture end -->

<!-- kupci end -->


trebalo bi da se onda klasi prosledi array sa kupcima, a da opet u svakom tom array-u postoji jos i array fakture.
e sad svaka ta faktura ima jos i stavke... kupac moze da ima vise faktura, a svaka faktura moze imati jednu ili vise stavki...
e tu postaje zapetljano... trebalo bi resiti rekurzijom ali nikako da to elegantno odradim...

rezime: cilj je da klasi samo prosledis array-e koji sadrze pod-arraye sa podacima (skoro direktno iz kverija nad bazom),
a da ona sama sve lepo ispise, u skladu sa templejtom:

naziv kupca: kupac1
broj kupca: 0001

broj fakture: k1-01
datum fakture: 31/12/2006

stavka fakture:
nr: 1 artikal: artikal1 kol:100
nr: 2 artikal: artikal2 kol:110
nr: 3 artikal: artikal3 kol:120

broj fakture: k1-02
datum fakture: 31/12/2006

stavka fakture:
nr: 1 artikal: artikal1 kol:100
nr: 2 artikal: artikal2 kol:110
nr: 3 artikal: artikal3 kol:120

pa onda sledeci kupac:

naziv kupca: kupac2
broj kupca: 0002

broj fakture: k2-01
datum fakture: 31/12/2006

stavka fakture:
nr: 1 artikal: artikal1 kol:100
nr: 2 artikal: artikal2 kol:110
nr: 3 artikal: artikal3 kol:120

broj fakture: k1-02
datum fakture: 31/12/2006

stavka fakture:
nr: 1 artikal: artikal1 kol:100
nr: 2 artikal: artikal2 kol:110
nr: 3 artikal: artikal3 kol:120


itd itd...

nije lako ali je sasvim izvodljivo... ako provalim sam javicu... ako neko vec ima reseno neka se isprsi....
mislim da smarty to vec odavno sve moze ali ja volim izazove (do sada mi ovo nije stvarno zatrebalo pa se nisam mnogo bas ni potrudio)
ali mislim da je zahvalno imati reseno ako zatreba...

ajde da vas cujem PHP frikovi

pozdrav
UncleBlob
[ Davor Grubelić @ 10.12.2006. 11:20 ] @
e vidiš, taj problem imam i ja. sa takvim template engine-om možemo kreirati samo statički template file, bez recimo mogućnosti kao u smartyju ( {section } ), pa da se to sve odvrti. jedna varijabla i jedan tag.
ja također radim na rješenju tog problema.

vidjet ćemo što će se iz toga izroditi.
[ _BloB_ @ 10.12.2006. 14:59 ] @
e pa sad nije bas tako... moja klasa podrzava vise od statickih templejta...

mozes da prosledis niz (npr. niz od 10 elemenata, recimo za 10 artikala nekog magacina) za jednu varijablu (recimo artikli) i da onda klasa tu prikaze 10 redova jedne tabele...

a templejt sadrzi samo jedan red (sablon)...

ne znam da li si pazljivo gledao source-code i primer za klasu...

jedino sto klasa ne podrzava jesu takve ali rekurzivne varijable...

znaci da jedan ponavljajuci deo templejta sadrzi jos jedan ponavljajuci deo, pa jos jedan itd itd...

moze se reci da je ponavljanje podrzano samo na prvom nivou...

ne znam da li si na to mislio ili ne...

ako si i ti zapeo na istom mestu hajde da udruzimo snage i resimo to...

ideje ???

poz
Blob
[ w3bl0rd @ 10.12.2006. 21:16 ] @
evo ovo je moja template klasa.. premda je ovo neka beta verzija i vjerojatno nije baš najbolje urađena ali pogledajte pa slobodno (bilo bi mi drago) da iskomentirate...
to sam uradio prije kakvu godinu dana i da nije uopće iskomentirana
i da za php4 je a ne 5...
[ _BloB_ @ 10.12.2006. 22:45 ] @
Pozdravljam, dobrodosao u nasu PHP radionicu!!!

samo ako je ikako moguce daj neki mali primer da vidimo sta klasa moze...
da ne gubimo vreme sad provaljujuci kod...

imas li takozvane ponavljajuce tagove i da li podrzavas rekuzivne ponavljajuce tagove
(vec sam objasnjavao sta je to da se ne ponavljam)

Blob
[ ColdKeyboard @ 11.12.2006. 00:44 ] @
Sorry sto je mao offtopic ali moram da zamolim da li neko od vas mozda ima neke tutorijale za Smarty ili Zend
da preporuci i po mogucnosti za Smarty ako su na nasem jeziku ? Hvala unapred.

Za projekte koje sam do sada radio koristio sam par svojih 'klasa' kojima sam modifikovao 2-3 reda
po potrebi i sve je radilo extra. Sada bih htio malo ozbiljnije da se upustim u to i Smarty mi se ekstremno
svidja ali tutorial na engleskom je pomao stur, malo primjera i malo je objasnjeno...

Pozdrav,
Sale
[ _BloB_ @ 11.12.2006. 06:38 ] @
probaj na:
http://php.com.hr/

i uci engleski :)

poz
UncleBlob
[ w3bl0rd @ 11.12.2006. 09:41 ] @
da podržava rekurzivne ponavljajuce tagove samo klasu bi isto trebalo doraditi ("pati od dečjih bolesti") :-D
sve u svemu radi dobro svoj posao...
pa evo npr uz upload evo jedan template a napisao sam bio i manual (tekst dokument koji objašnjava sve funkcije) više manje meni za podsjetnik samo moram to naći ne znam negdje je zakopano :-)

[Ovu poruku je menjao w3bl0rd dana 11.12.2006. u 10:56 GMT+1]
[ _BloB_ @ 11.12.2006. 10:01 ] @
ok, to je lepo, ali to moze i moja klasa...
nije sad da se nadmecem, nego ovde (izmedju ostalog) trazimo resenje za templating klasu
koja ce podrzavati ne samo ponavljajuce vec i rekruzivne templejte...

ponovo cu objasniti

ako je ovo templejt (bez htmla):

Code:

<!-- kupci begin -->
Naziv kupca: (%naziv%)
Broj kupca:  (%id%)

<!-- fakture begin -->
broj fakture: (%id%)
datum Fakture: (%datum%)

<!-- stavke begin -->
Stavka fakture:
nr:(%nr%) artikal: (%artikal%)  kol:(%kolicina%)
<!-- stavke end -->

<!-- fakture end -->

<!-- kupci end -->


i ako klasi prosledis niz od 10 kupaca, a svaki ima po 2-3 fakture, a svaka faktura po 5-6 stavki,
klasa mora da ispise za svakog kupca, jednu po jednu fakturu, a za svaku fakturu sve njene stavke:

kupac 1:
faktura 1:
stavka 1
stavka 2
stavka 3
faktura 2:
stavka 1
stavka 2
stavka 3

kupac 2:
faktura 1:
stavka 1
stavka 2
stavka 3
faktura 2:
stavka 1
stavka 2
stavka 3

itd itd...

u tvom primeru za templejt ides samo do prvog nivoa... ako klasa moze dalje od toga daj neki primer...
ako ne imas li neke ideje kako implementirati...

poz
Blob
[ dakipro @ 11.12.2006. 10:18 ] @
Bas sam preneki dan koristio rekurziju u smartiju, i najprostije (ujedno i najsporije) resnje je ponovno inkludovanje tog istog fajla. Nisam se mnogo bavio problematikom jer mi je za admin deo, pa mi nije kljucna stavka brzina, te sam iskoristio taj metod. Video da za smarty postoje neke funkcije na nekim forumima sa sve kesiranjem, pa vidite neko od tih resenja. Mozda pomogne
[ flylord @ 11.12.2006. 10:33 ] @
Hhee, i ja sam ranije pricao da mi nije bitna brzina u admin delu, a onda sam skontao da samim tim sto sam zvrtvovao brzinu, dobio sam skripte koje jedu memoriju, i onda skripta vise nije mogla da resajzuje cak ni slike od 20kb :( .
Ipak treba malo paziti i na brzinu i optimizaciju admin panela. Moze nekad da vam se blago obije o glavu

[Ovu poruku je menjao flylord dana 11.12.2006. u 14:37 GMT+1]
[ _BloB_ @ 11.12.2006. 11:10 ] @


to je istina, pravilo-tautologija:
UVEK SVE (KLASA, RUTINA) KODIRAJTE KAO DA U PITANJU KRITICAN DEO PROGRAMA (APLIKACIJE)

jer kada nesto programiras, i odradis povrsno, razmisljajuci: "ovo nije bitan deo, nije vazno da li je optimizovano, samo da radi", sutra ili za godinu dana, ispostavice se da vam program lose radi, BAS zbog TOG loseg koda

vrati se kao bumerang...

a sto se tice Smarty-ja, super je on, i sigurno moze ovo sa rekurzijom, ali zasto ne bi napisali malu klasu koja radi osnovne funkcije Smartyja u okviru nekoliko KB koda i koristili je za manje projekte...

a za velike projekte Smarty je bez premca...

znaci niko nema resenje za ovu rekurziju...?
nista, moracemo zasukati rukave...


[ glavince @ 11.12.2006. 11:47 ] @
Decki, svaka cast za temu.
Prvo bi zeleo da vam se izvinima za moj off topic, ali zelim da cujem vase mislenje.
Do sad se nisam bavio sa nijednim template enginom.
Na nekoliko navrata sam pokusavao da malo rascackam Smarty ali nikad nisam imao dovoljno vremena.
Skljucio sam ugovor za izradnju nekoliko web sajtova koji bi koristili isti php kod, samo bi dizajn bio razlicit.
Za ovaj projekat mi definitivno treba template engine, ali imam rok za koji moram da realiziram projekat.
Zato zelim da vas pitam. Dali smem da reskiram vreme koje namam bas na preteku da bi naucio nesto poput Smartija ili slicno. I za koliko vremena bi ga otprilike savladao da bi mogao da ga implementiram u jedan serijozniji projekat.
Zelim opet da se izvinim, ali dajte savjet.
[ dakipro @ 11.12.2006. 12:03 ] @
Otprilike 4-5 sati... Zavisi koliko brzo citas :) . protrci kroz dokumentaciju, pogledaj sintaxu, foreach i if petlje, debugging konzolu (korisna stvar, pogotovo u pocetku), include file, a detalje provaljujes u letu (i na internetu). Bar meni sad nije komplikovan. Bitno je da imas na umu da je to samo php klasa, tako da je to php kod, koji ti olaksava odvajanje html-a od php-a, ili jos bolje logiku dizajna od operativne (ili kako vec) logike. Dosta ljudi ima neki strah od nepoznatog ka smariju, jer zaborave tu cinjenicu.
[ _BloB_ @ 11.12.2006. 12:55 ] @
Ma nije Smarty bauk... malo zagrej stolicu i prouci dokumentaciju, probaj primere i skontaces sigurno.

jedino sto ima puno opcija koje zaklanjaju 'vidik' od kojih ti realno 60% ne treba u normalnom radu...

meni se ne svidja kod Smartyja sto je malo glomazan i najcesce ti nije potreban ako je u pitanju mali projekat...

za vece projekte je neophodan cini mi se...

poz


[ Davor Grubelić @ 11.12.2006. 14:15 ] @
zbilja bi zanimljivo bilo da recimo ima smarty lite verzija.. samo neko osnovne funkcije koje su potrebne za manje projekte. cijeli smarty mi je malo prevelik.
nema čak ni mogućnost minimal instalacije, kao adodb.

ali zato smo mi tu...da ispravimo taj nedostatak...

e sad dosta praznog pričanja..ajd na posao.
stali smo kod rekurzivnih template varijabli...

malo me tu muči stvar vezana za konstrukciju samih templatea. gledajući smarty, vidimo da se ukoliko prenostimo engineu polje, u templateu također mora definirat za svaki član polja pripadauća varijabla.

Code:

<table>
{section name=data loop=$podaci}
<tr><td>
{$podaci[data].ime}
</td></tr>
...
<tr><td>
{$podaci[data].prezime}
</td></tr>
{/section}
</table>


e sad, ako polje sadrži još nekoliko polja u sebi, opet se mora definirat u templateu što će se i gdje prikazivat.

bez toga, rekurzivnost po meni baš i nema smisla, jer ako u templateu imamo:

Code:

{podaci}


i prenesemo polje koje u sebi sadrži još polja, dobivamo neoblikovani ispis.

tu je onda dovoljan samo jedan nivo prikaza polja.

znači engine pročita sve varijable templatea i na osnovu definicije tih varijabli se se uskalđuje zamjena template varijabli sa vrijednostima polja.
jednostavno, na osnovu templatea bi trebalo definirati u engineu do koje dubine polja treba ići.

{podaci.ime.status}

u polju podaci postoji polje sa imenima korisnika, a u njemu opet polje sa njihovim statusima.
tagovi na osnovu template varijabli...



isti princip je i smartyja.
no to za samrty svi znate, bar oni koji su uključeni u ovu temu.
ukoliko se netko ne slaže sa ovim ojim tvrdnjama, slobodno neka me ispravi...samo molim bazo onoga (proičaš gluposti itd...)!!!

[ Davor Grubelić @ 11.12.2006. 14:27 ] @
a ako ništa od novog templatea, onda bar da se bacimo na editiranje smartyja u lite verziju...
[ dakipro @ 11.12.2006. 14:46 ] @
Jel probao neko Template Lite, a Smarty compatible template engine?
http://devzone.zend.com/node/view/id/98
[ Davor Grubelić @ 11.12.2006. 15:04 ] @
dali je ovo znak da možemo prestati sa našim pokušajima da napravimo template engine???

haa???

točan odgovor je: NE
[ dakipro @ 11.12.2006. 15:39 ] @
Ne, za slucaj da si mislio nesto drugo, samo informativno sam pitao, posto me zaintrigirala tema lite template engina. Znaci nisam imao nameru da kvarim entuzijazam pravljenja jedinstvenog engina, posto zaista cenim "hand made".
Mada iskreno ne volim da pravim nesto sto vec postoji, tj. da izmisljam toplu vodu, ali iskreno postujem tudj rad i trud... Ako cenis da projekat vredi ulozenog vremena, super, samo napred...
[ Davor Grubelić @ 11.12.2006. 16:17 ] @
ne, ne..sve u redu. dobro da si postao link. nisam ni znao da postoji "olakšana" verzija smarty-ja.
ali ja sam još uvijek za da se radi, kako si rekao "(malo dorađeno.. 'our hand made')" template engine.

i ja sam još novi u svijetu template engine-a, tako da možda moje ideje i neće zvučati baš najlogičnije. ali, opet nitko se nije rodio sa znanjem php-a(ili bilo čega drugoga)...
[ w3bl0rd @ 11.12.2006. 16:38 ] @
da radi...
probaj npr
$niz[0][0][0][1]="Bezvezna stavka..."; //može do beskonačnosti...
$tpl->assign("niz",$niz);

a u templateu

{$niz.0.0.0.1} mislim da je tako napamet sad govorim..... tak ako je greška da se ne uzima za zlo
[ Davor Grubelić @ 11.12.2006. 16:47 ] @
predivno...probat ću kad dođem kući.
[ w3bl0rd @ 11.12.2006. 17:24 ] @
da.. sa nekoliko linija koda sredio si sve... sječam se samo da sam se lijepo namučio dok mi to nije proradilo... pogledaj si funkciju assign baš dio koji brine za array... mislim da ću malo sada još poboljšati cijelu klasu... ustvari cijela klasa je napisana samo da radi nije bila "pročešljana"...
[ _BloB_ @ 12.12.2006. 08:27 ] @
Bas mi je drago da se topic zahuktao..
stvari su otisle u raznim pravcima i to je odlicno...

sad cu ja malo da odem off-topic, cisto da jos vise zakomplikujem stvari..

evo sta ja (sad) pokusavam da postignem:

templejt:
Code:

ULASCI SVAKOG RADNIKA KAO I KOLICINE ROBE KOJE JE DONEO:
<!-- radnik_begin -->
<!-- radnik_header begin -->
Radnik: (%id%)
<!-- radnik_header end -->

<!-- radnik_detail begin -->
Rbr: (%nr%)  Vreme Ulaska:(%datum%) Kolicina:(%kol%)
<!-- radnik_detail end -->

<!-- radnik_footer begin -->
ukupan broj ulazaka radnika: (%count.id%)
ukupna kolicina: (%sum.kol%)
<!-- radnik_footer end -->
kraj izvestaja!
<!-- radnik_begin -->


e sad klasi cu da prosledim array $radnik koji sadrzi sledece podatke:
(mada ovo su podaci koji stizu direktno iz baze, ne zelim uopste da ih parsiram, samo uradim upit nad bazom
i taj rezultat preuzmem u jedan veliki niz i nazovem ga $radnik):
Code:

$radnik[] = array ( id => 1 , nr => 1, datum = "01/01/2006" , kol = 10);
$radnik[] = array ( id => 1 , nr => 2, datum = "01/01/2006" , kol = 20);
$radnik[] = array ( id => 1 , nr => 3, datum = "01/01/2006" , kol = 30);

$radnik[] = array ( id => 2 , nr => 1, datum = "01/01/2006" , kol = 40);
$radnik[] = array ( id => 2 , nr => 2, datum = "01/01/2006" , kol = 20);
$radnik[] = array ( id => 2 , nr => 3, datum = "01/01/2006" , kol = 30);

$radnik[] = array ( id => 3 , nr => 1, datum = "01/01/2006" , kol = 40);
$radnik[] = array ( id => 3 , nr => 2, datum = "01/01/2006" , kol = 20);
$radnik[] = array ( id => 3 , nr => 3, datum = "01/01/2006" , kol = 30);

e sad klasa bi trebala da ispise ceo report, tako sto za svakog radnika prikaze sve njegove ulaske, a u footeru za svakog radnika da sabere kolicinu koju je uneo, kao i da ispise koliko puta je usao u firmu.

mozda i neke grand totale dodati na dno izvestaja (koliko su puta svi radnici zajedno usli u firmu i koliko su robe doneli)

e sad zasto ja ovo sve vama govorim?
zato sto je ovo sasvim realan problem iz svake ozbiljne web aplikacije.
Banded Report.
Ko je ikada koristio ReportBuilder ili FastReport ili CrystalReport u Delphiju ili C# znace o cemu pricam...
To moze biti spisak radnika sa njihovim ulascima u firmu, spisak faktura sa njihovim vrednostima, itd itd...
ali svakom ko radi ozbiljnije aplikacije koje imaju neku realnu upotrebu se srece sa ovakvim zahtevima...

kao stvoreno za klasu

pokusacu da prepravim svoj kod tako da podrzava ovakve reporte ali i da radi sve sto je i pre...

ako neko vec ima klasu koja sve ovo moze neka se javi da se ne mucim...

ajd pa poz
i ajde postujte ljudi, konacno smo malo pokrenuli ovaj forum!!!
Blob


[ _BloB_ @ 12.12.2006. 12:40 ] @
da, jos jedna stvar:

template klasa mora da racuna totale za kolone u izvestajima i da moze da se podesi koja kolona odredjuje kada se totali resetuju.

Isto tako mora da podrzava i podesavanje da NEMA resetovanja, vec da jednostavno ispise prvo HEADER iz templejta, pa sve stavke DETAIL dela templejta i FOOTER templejta.

to se prosledjuje kao parametar u telu templejta...

takodje mora da postoji i brojac stavki u svakom subreportu, kako bi se zbir i broj stavki mogao ispisati u svakom
footeru...

zamisao je da : napravis HTML templejt i u njemu oznacis sta je HEADER, sta DETAIL (za ponavljanje redova) a sta je FOOTER, i onda prosledis klasi redove iz SQL baze, i eventualno prosledis parametar koja kolona resetuje grupe.
klasa sama ispisuje HEADER, zatim redove DETAIL-a, i FOOTER ako postoje grupe i ako je zadovoljen uslov (recimo ako su ispisani svi podaci za jednog radnika, pa treba krenuti sa sledecim)...

zatim opet krece HEADER, pa DETAIL redovi pa FOOTER itd itd...

isto tako treba da moze da se definise deo templejta koji ce se ispisati ako nema podatak. Recimo ako prosledis klasi prazan niz za neke podatke, ona ne sme da ispise gresku, vec prikaze deo templejta koji je oznacen kao DETAIL_EMPTY.

otprilike FIRE AND FORGET klasa...

negde sam na oko 85% funkcionalnosti klase koja sve ovo moze...
uskoro postujem kod pa da raspravljamo...

ajde guknite, nece se valjda ovaj topic pretvoriti u moj licni Blog?

poz
Blob
[ Davor Grubelić @ 12.12.2006. 14:44 ] @
ne brini, nećeš sam pisati u ovoj temi...

jedna moja moja zamisao:

u templateu se definira što će se ponavljati, a što neće.
recimo {podaci -repeat}

znači, ukoliko u templateu postoji "varijabla" koja sadrži "repeat", klasa će odmah znati da se toj varijabli prenosi polje.
te bi tako sam engine znao što treba raditi.
i ukoliko se "varijabla" iz templatea slaže sa tagom iz php polja ispisat će se vrijednost polja, inače prazan string.

mislim da bi to olakšalo sismtem smartyja (section loop...)
manje pisanja...


[Ovu poruku je menjao Davor Grubelić dana 12.12.2006. u 16:46 GMT+1]

[Ovu poruku je menjao Davor Grubelić dana 12.12.2006. u 16:46 GMT+1]
[ _BloB_ @ 12.12.2006. 18:47 ] @
slazem se da u templejtu treba podesiti sta se ponavlja...
Smarty je to zakomplikovao...

u templejtu ne treba da bude logike (po meni) vec samo opisni tagovi, mesta (tokens) za podatke
i eventualno parametri...

a php klasa treba da ima logiku u sebi...

smarty je malo pomesao babe i zabe...

ma ovo na cemu radim je mnogo prostije a odradjuje posao...

ne mogu jos da postujem kod, jer nije gotovo...

uskoro...

ovako izgleda templejt:

Code:

<!-- report name="radnik" break="id" param1="test" param2="ttt" begin -->

<!-- header begin -->
Radnik: (%id%) <br>
<!-- header end -->

<!-- detail begin -->
(%id%) :: Rbr: (%nr%)  Vreme Ulaska: (%datum%) Kolicina: (%kol%) <br>
<!-- detail end -->

<!-- detail_empty begin -->
Nema radnika u bazi <br>
<!-- detail_empty end -->

<!-- footer begin -->
ukupan broj ulazaka ovog radnika - (%id%)  je : (%count.id%) :: (%sum.kol%)  ::  (%sum.id%) :: (%avg.kol%)
<hr>
<!-- footer end -->

<!-- report name="radnik" end -->


vecina stvari vec funkcionise ali jos treba dorade...

sve sugestije su dobrodosle,
pozdrav
Blob
[ Davor Grubelić @ 12.12.2006. 20:30 ] @
ja baš nemam previše vremena da razvijem engine. imam jedan drugi projekt koji moram završit.
ali eto, pošto si ti skoro gotov, drago mi ej ako sam ikako pomogao.
ovo će mi biti vodič kada budem pravio svoj engine.

sretno sa završavanjem enginea...
[ _BloB_ @ 12.12.2006. 23:06 ] @
racunam da ce templating engine biti u beta-test verziji vec sutra...

i nadam se da ce moci sve sto je potrebno za templating a da ce biti brzo i lako za upotrebu...

makar se tim idejama vodim dok kreiram klasu...

hvala na pomoci...

cujemo se uskoro...

ajde u medjuvremenu postujte neki svoj kod ljudi...

da vidimo na cemu sad radite... posebno u PHP5...

koje klase ste sami razvili, a da ih mnogo koristite, prosto ne mozete da verujete da to pre niste imali..???


podelite sa svima nama...

pa nemoguce da nemate neki kod na koji se ponosite...?

ajd poz
Blob

[ Vuk Nikolić @ 12.12.2006. 23:21 ] @
ja sam radio nesto malo u php5, i mnogo mi se dopao zbog slicnosti sa javom, ali posto na serveru nemam php5 ostao sam na 4ci.

za sad sam radio neke sitne stvari, tako da pravu moc oopa nisam koristio (bar u phpu).
[ dakipro @ 13.12.2006. 08:38 ] @
Citat:
_BloB_ :
u templejtu ne treba da bude logike (po meni) vec samo opisni tagovi, mesta (tokens) za podatke
i eventualno parametri...


Da, ali je mnogo bolje i lakse (subjektivna stvar) da praktikujes MVC (Model-view-controller http://en.wikipedia.org/wiki/Model-view-controller ) logiku za izradu aplikacija. tj, odvajas obradu podataka od nacina prikazivanja, tako da jedno nema uticaja na drugo. Iliti, iz baze izvuces klot niz, ako treba nesto izracunas, i obican niz posaljes template enginu, gde posle template enginom vrsis obradu podataka, u smislu formatiranja za prikaz... Znaci fora za rad sa template enginom (konkretno Smartijem) je da razdvojis prezentacionu logiku od logike obrade, a ne odvajanje html-a od php-a. Mada, opet kazem, sve je to subjektivna stvar. Mene konkretno cesto mrzi da se majem sa smartijem, i odvajam te dve logike, mada se trudim...
[ Davor Grubelić @ 13.12.2006. 09:17 ] @
pa ne znam šta ovdje nije bilo jasno.

pa mi cijelo vrijeeme i govorimo kako treba odvajati programsku logiku (samo kod programa) od prikaza podataka.

na relaciji programska logika(o)<------------->(o)prikaz podataka se nalazi template engine koji obrađuje podatke i brine se o tome što će i gdje biti prikazano.

e sad, a samim time što progrmaer ide na to da odvaja logiku od prikaza se u neku ruku i ide na to da se razdvoji php od html-a.

programska logika(o) <--------------> (o) prikaz podataka
php kod ............(o) <--------------> (o) html template

kao da nisi čitao postove prije, sve je to već spomenuto i objašnjeno prije...
[ _BloB_ @ 13.12.2006. 09:19 ] @
pa odvajanje html-a od php-a na kraju mora da rezultuje odvajanjem prezentacije od logike aplikacije.

doduse nije sve tako prosto ali moze se tako reci...

smarty ima previse logike u sebi, ali ti ne moras da sve to koristis, to je vec stvar odluke...
licno mene smarty smara pa se trudim da ga izbegnem ako mogu...

a MVC je vrlo zanimljiv pristup, neke stvari zaista resava elegantno...
pogotovo mi sve svidja sto sam po sebi namece Search Friendly URLs (mada je to manje bitno, to je kao nuspojava celog koncepta).

ali MVC nema svrhe koristiti za manje projekte pogotovo obicne Web prezentacije...

nema potrebe za tim.... samo se doda kompleksnost koja nije potrebna (makar se meni tako cini).

za vece aplikacije MVC je dobro resenje...

igrao sam se malo sa MVC-om ali samo testovi, bez zavrsenih projekata...
u buducnosti definitivno planiram da se pozabavim time...

u sustini cekam Zend Framework 1.0 pa da krenem sa njim i ujedno i sam MVC-om...
(necu da se cimam na preview verzije ZF-a jer se stvari jos menjanju, ali cini mi
se da ce to biti najbolji framework za PHP5)

kakva su vasa iskustva sa Zend Framework-om? koristi li ga neko za prave projekte?

poz
Blob
[ Davor Grubelić @ 13.12.2006. 09:39 ] @
kako je krenulo zend framework neće još dosta dugo (gledam po verziji) 0.2.0...
možda nas iznenade pa uskoro i izbace verziju 1.0...tko zna..
[ _BloB_ @ 13.12.2006. 09:43 ] @
bice ZF malo skorije...

mislim da je 1.0 Release Candidate planiran u martu 2007. godine a to je ipak uskoro

poz
Blob
[ Davor Grubelić @ 13.12.2006. 23:23 ] @
1.0 RC u ožijku... znači full verzija za ljeto. ma samo neka izađe.
koristio sam 0.2.0, ne puno...ali..
čini se jako "koristan".
vidjet ćemo što nam budućnost donosi.
[ glavince @ 14.12.2006. 12:01 ] @
Ja se opet izvinjavam za off topic.
Postavio sam temu u forum Smarty template engine, ali izgleda da je taj forum slabo posecen.
Zamolio bi vas ako imate vremena da malo pogledate
http://www.elitesecurity.org/t233003-while-untar-while
Hvala.
[ _BloB_ @ 18.12.2006. 07:57 ] @
evo mene opet, realni zivot se umesao tako da uveliko kasnim sa Templating klasom koju sam obecao.

posto nije jos gotova, ali ipak radi vecinu stvari koje sam zamislio, postujem je ovde da cujem vasa misljenja...

u pitanju je php5 kod.

saljem i primer templejta da vidite kako radi...

uglavnom klasa radi slicno kao ReportBuilder ili QuickReport. Templejt ima Header band, Detail band (koje se ponavlja 1 ili vise puta, recimo stavke fakture) i Footer band u kojem klasa sama broji stavke, racuna zbir, proseke zeljenih kolona (opciono)

trenutno radi brojanje (count.imeVarijable) i suma (sum.imevarijable)

takodje klasa podrzava i definisanje detail_empty band-a koji se ispise ako nema stavki da se prikazu unutar Detail-a...
(ovo sam maznuo iz Smarty-ja

pogledajte kod i templejt i startujte primer i sve ce vam biti jasno...

planiram da ubacim jos malo logike tako da su svi Band-ovi opcioni: recimo ako ne odredis header ni footer onda ih ni nema, vec je sve detail itd itd...

ajd pa ako je neko zainteresovan da zapocnemo ozbiljnu raspravu i razvijemo najbolji template engine

sve konstruktivne kritike su dobrodosle.

Poz
UncleBlob
[ Jezdimir Lončar @ 18.12.2006. 10:39 ] @
Hm...
Ona predhodna v. mi nije radila sa <!-- ... Start / End
tj. sa loopovanjem.
Ako to završim i malo bolje shvatim ovaj tpl engine, koristiću ga u forumu koji pravim...
[ _BloB_ @ 18.12.2006. 12:28 ] @
ma ovo radi 100% samo kao sto rekoh nije zavrseno...
i nije ni mnogo testirano jer nemam vremena za to...

previse posla trenutno imam...

ali definitivno idem u buduce sa ovom klasom za Templating samo cu je jos unaprediti...

sve druge pristupe ovom problemu ( a bilo ih je dosta, verujte mi) napustam kao neuspele

nego sam ovu klasu postovao ovde da vidim sta vi ljudi mislite o celom konceptu...

ove je moja alternativa na temu Templating-a (necu da kazem Smarty-ju posto bi to bilo nerealno).

to je jedna prosta klasa za templating sa Reportovima i Master-Detail band-ovima.

ne kazem ni da je najbolja ni da je gotova.

radi ono sto mi treba na nacin na koji se meni trenutno cini da je to zgodno...

samo uradim upit nad bazom, i ako dobro koncipiram sam upit, ne treba nista vise
da kodiram, ubacim tagove u templejt i klasa ce ostalo sama da odradi...

ispisace mi zaglavlje, sve stavke i footer, i zbirove ako je potrebno...

sistem: kljuc u ruke...

ali me interesuje ima li neko ideju sta tu nije dobro i (sto je jos bitnije) kako sve to unaprediti...

samo nemojte da udarite sa onom pricom: "to ne valja..." ako nemate nastavak price "... to se bolje moze
uraditi ovako i ovako... "

ajd i srecno kodiranje,
UncleBlob
[ Jezdimir Lončar @ 20.12.2006. 08:25 ] @
Ajd zamjeni u tpl da ne moram da kucam (% i %) ...
Prste polomim dok to otkucam...
Zamjeni ga sa recimo { i } ili nečim tako...
[ _BloB_ @ 20.12.2006. 13:59 ] @
Citat:
Neohacker: Ajd zamjeni u tpl da ne moram da kucam (% i ð...
Prste polomim dok to otkucam...
Zamjeni ga sa recimo { i } ili nečim tako...


Cao Neohacker-u!

hvala na feedback-u... e sad sto se tice (%%)...

ima sad tu nekih problema... recimo konstrukte {imetokena} koristi i JavaScript...
tu moze da dodje do velikih problema (da ne navodim sada primere mislim da je jasno...)

nije slucajno izabrano (%imetokena%)... vrlo je nestandardno i samim tim sanse da se pojavi u nekom
html templejtu a da nije tu namerno (tj da nije u pitanju token koji treba zemeniti) su minimalne...

isto je i sa <!-- report name="licences" begin --> ... <!-- report name="licences" end -->

u pitanju su tagovi koji regulisu 'logiku' templejta a ujedno su to i HTML komentari, tako da su nevidljivi
kada dizajniras templejt u HTML editoru.

dosta sam toga probao, ovo je kombinacija koja ne pravi probleme...

tako da ne bih menjao to za tagove... mada mozda ubacim kao opciju, samo da zadovoljim neke
prohtevne korisnike to kad budem imao malo vise vremena...

a sto se tice same klase, ona je dosta napredovala od poslednjeg posta...

na kraju sam morao da ubacim mogucnost logike u templejtu recimo:

<!-- if ( $active == 1 ) -->
LICENCE IS ACTIVE
<!-- else -->
LICENCE IS not ACTIVE
<!-- endif -->



jer sam uvideo da je to jednostavno neophodno i da bez toga neke stvari nije moguce uraditi a da sve i dalje bude jednostavno...

u svakom slucaju napredujemo....

evo opet postujem izmenjenu klasu i primer templejta i jedan skript koji sve to koristi.

napominjem da nije neophodno da report ima SVE bandove (header, footer detail) vec samo one koji
su konkretno potrebni...

primer koji postujem ima sve cisto - radi primera

klasa sama racuna sume i proseke u FOOTERU i takodje broji broj stavki...

podrzano je i da report sam ispisuje FOOTER kada se neko polje promeni, recimo broj otpremnice u
konkretnom primeru...

podrzani su i IF uslovi unutar svih delova templejta ali detaljnije o tome neki drugi put...

polako ali sigurno postace SmartyLite II

salim se, nadam se da nikada nece biti toliko glomazno...

ajd pa koristite i javljajte sta mislite...

klasa se vec koristi u konkretnom projektu tako da cu morati da je sredim do kraja...

poz
UncleBlob
[ Jezdimir Lončar @ 21.12.2006. 18:57 ] @
Ok...
Shvatam...
Malo je teze ali hajd' sad :)
[ _BloB_ @ 29.12.2006. 09:34 ] @
nova verzija MyTemplate klase:

!!! Srpski Smarty-Lite u 20k koda !!!

requrements: >= php5

features:

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

  <!-- 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 funkcijom assign() koja podrzava i nizove (koji se ispisuju u Detail bandu)
(Ponavljanje redova ako postoje vise stavki za isti podatak pomocu Detail i Detail_Empty band-ova)
- If uslovi, u kojima se mogu koristiti promenjive koje prosledite template-u
(podrzane operacije: ==, ===, !=, is true, is false, is odd, is even itd itd)
Code:

<!-- 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 -->
   

- filteri ze tokene:
Code:
(%imetokena:raw%) (%imetokena:upper%)  (%imetokena:lower%) (%imetokena:ucwords%)
   nohtmlentities() za vrednost tokena: (%imetokena:nohtml%) 
   

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

  (%count.id%) 
  (%sum.kol%)
  (%avg.kol%)
   


klasa podrzava i jos mnogo toga, proverite samo 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!!!

sretni praznici!
pozdravlja vas UncleBlob

[ balkan7 @ 30.12.2006. 15:27 ] @
e to je cool blob !!!
[ Jezdimir Lončar @ 16.01.2007. 12:34 ] @
Ovoj klasi treba samo bolji help ...
[ _BloB_ @ 16.01.2007. 16:35 ] @
slazem se ali fali mi vremena za to...

otvorio sa projekat za ovu klasu na sorceforge.net-u, sada se zove 'Intuition PHP Templeting Engine'

http://sourceforge.net/projects/intuition/

ako neko hoce da se ukljuci u razvoj ili dokumentovanje neka se javi...

(to vazi i za tebe Neohackeru)

poz




[ Jezdimir Lončar @ 16.01.2007. 16:46 ] @
:)
Može... Ajd javi mi se na skype, treba mi pomoć...
Mislim, nisam čuo da je ikoga ubilo Skypeovanje :D ... Ajd očekujem te i čujemo se!
[ Jezdimir Lončar @ 29.01.2007. 18:32 ] @
Pozdrav!
Evo samo da kazem da sam napravio klasu za DB itd. ali je jos nisam testirao.
Recicu kad bude za "public use".
Takodje, pravim i mali framework, tj. skup klasa koje sam ja pravio i koje je neko drugi pravio za php 4.
Mislim da ce se i ova _Blob_-ova klasa naci ovde ;) .
Jezdimir.
[ _BloB_ @ 29.01.2007. 18:48 ] @
odlicno, jedva cekam da vidim...

ajde ljudi javite se, da cujemo na cemu radite, saljite svoje klase (ph4 ili php5) da vidimo sta znate:

- db klase (CONNECTION, QUERY, Active Record)
- registry klase
- error logging
- design patterns

itd itd tj sve sto trenutno koristite i mislite da je korisno..

pa nije valjda da mislite da su vase klase toliko dobre da ne smete da ih pokazete, da vam ne ukradu )))))))))))



poz
Unlcle Blob
[ flylord @ 29.01.2007. 22:56 ] @
za DB koristim AdoDBLite

za error loging i slicno koristim svasta, imam svoju klasu, a koristim i dBug klasu (za ispis outputa).

za mail koristim swift skriptu. Za display logiku koristim Smarty. Ponekad koristim Snoopy (kao browser emulation, kad nemam CURL),

mislim da nista vise ne koristim gotovo. Sve ostalo pravim sam

Avram: BBkod popravljen

[Ovu poruku je menjao Nemanja Avramović dana 30.01.2007. u 00:44 GMT+1]
[ damso @ 03.04.2007. 11:23 ] @
Da li OO PHP podrzava sve kao i JAVA,tj. da li implementira sve najbolje principe OO za koje kazu da je JAVA implementirala sve najbolje?
[ Davor Grubelić @ 11.06.2007. 22:44 ] @
Vjerojatno vec znate, ali evo za one koji ne znaju. Zend framework se polako blizi verziji 1.0. Trenutno je aktualna verzija 1.0 RC2 sto bi po mom misljenju trebalo dovesti do pune 1.0 verzije kroz nekih mjesec dana.
Tek sam downloadao 1.0 RC2 verziju i nisam bas puno imao vremena za upoznavanje s njom, ali mi se čini da je dosta izmjenjena on prethodnih verzija.
Nadam se da cu uspjeti kroz nekoliko dana napisati malo opsezniji review Zend Frameworka 1.0 RC2.

Btw, dali je netko mozda malo vise radio sa novom verzijom pa da iznese svoje misljenje???
[ Jezdimir Lončar @ 13.06.2007. 15:58 ] @
Ima mnogo bugova...
Mada moram priznati da je interesantan...
[ Schmidt @ 20.11.2007. 21:44 ] @
Framework: CodeIgniter, jako lijep skup klasa, malo nedovrshena obrada formi, odnosno validacija, ali da se dotjerati, ostalo sve je sasvim ok. Inache, MVC logika.

ZendFramework: malo sam ga pogledao, josh mu treba da naraste, recimo, validacija formi, koliko sam vidio, uopshte ne postoji. Nisam ga nikad instalirao pa nemojte uzeti moje tvrdnje kao 100% istinite, u codeigniteru sam napravio par projekata i zadovoljan sam.

Inache, kod frameworkova mi smeta shto nakon nekog vremena ljudi odustanu od razvoja i onda ostanesh sa ogromnom bazom projekata koje morash ili prepisati ili ostaviti takve kavi jesu i nadati se da nema bugova u frameworku, ili ako ih ima, da ih niko necje nacji :)

Zbog toga, nadam se da cje Zendframework narasti u dobar alat, za njega najmanje sumnjam da cje nakon nekog vremena biti ugashen, jedino se bojim da ga nakon nekog vremena ne pochnu naplacjivati :)
[ nezki @ 20.11.2007. 22:25 ] @
Da li neko ima adresu za free Zend Studio?
[ kazil @ 21.11.2007. 18:16 ] @
mislio sam zapocinjati novu temu, al` da se ne budzi :D no, da se i ja pridruzim. u znanju kanda oskudevam, al` zato zelja za radom je poveca :)

Prvo odgovori na pitanja:
yep php5, mislim pogledajte samo parsiranje xml-a u 4 i u 5. simplexml rulz :D

pokusavao sam da pravim neke svoje klase, da koristim tudje, al` nema vajde odtoga. mozda jos nisam naleteo na dovoljno velik i slozen problem da mi budu potrebne klase. il` se nisam dovoljno potrudio :D

pre koju nedelju sam probao zend fw... krenuo sa dokumentacijom, google, itd. nasao kao neki primer, jednostavan, select, insert, update, delete. malosutra jednostavno. skapir`o sam sve, al` nepotrebne komplikacije. ne kazem, moze biti dobar i koristan na nekim projektima gde eventualno treba 5+ programera. inace, ovako ja sam da se bakcem snjim... no sanse. isto i sa smartyjem. nizovi, petlje... meni je brze bez njih :D

inace, sto se tice pisanja programa, pravljenja web strana, brze mi ide ako sam kucam nego da skinem tudj kod, pa da ga provalim sta-gde-kad-kako-zasto radi i da ga podesavam za moje potrebe (nije istina da je neko nasao kod na netu, skinuo ga i bez imalo podesavanja mogao da ga koristi, il` sam ja samo baksuz). naravno, nisam l00d da stalno krecem od nule. kad nesto napisem i skontam da ce mi mozda jos makar jednom trebati, ondak taj deo pretvorim u neku sto vise generalnu funkciju, pa da je sledeci put najlakse ubacim gde mi treba. za sada imam gotove funkcije za login (sa sve kukijem Zapamti me?), captcha, upload fajlova, pravljenje thumbnailova za slike. samo kopiram u projekte gde mi je nesto od toga potrebno, includujem i sibaj. kolko tolko su ok, pazio sam da se lako dopunjuju, komentarisao i tako to. mislio sam sad okaciti tu te fajlove, samo ne mogu naci opciju za attachovanje (mozda i nema, nem` pojma), da malo iskusniji pogledaju, kritikuju, predloze nesto... ako nista drugo, videcu da krace copy/paste-ujem. inace, ako neko zna tajne attachovanja fajlova molim da mi otkrije the dark tajne :)

btw, nezki, ako ti treba zend studio 5.0.27, javi pa cu da kacim na rapid
[ kazil @ 22.11.2007. 09:47 ] @
Evo neke moje funkcije za upload fajlova. Ima nekih osnovnih provera. Da, komentari su na engleskom, ne zato sto sam ukrao neciji skript pa ga pokusavam uvaliti kao moj, nego sto sam ga stavio na 1phpstreet pa da ga svi razumedu :)

Ova prva funkcija je 'glavna' funkcija (ima dve funkcije). Na kraju sam napisao kako se poziva. Ukratko, proverava da li je
uopste izabran neki fajl za upload, da li je fajl ekstenzije koja se moze uploadovati, da nije veci od 2Mb. Ako sve te provere prodje bez problema, onda pristupa upload-u. Proverava da li postoji direktorijum gde zelimo up-ovati (ako ne onda ga napravi), ako vec fajl sa takvim imenom postoji onda prekida, proverava da li je uspeo da premesti iz tempa u up direktorijum. Na kraju menja dozvole na fajl i vraca putanju do fajla.

Code:

function upload_file($file_to_upload,$file_type,$upload_dir,$permission){
    
    if($file_to_upload == ''){
        
        $uploaded_file = "FALSE";
        return $uploaded_file;
        exit;
        
    }
    
    elseif(valid_file_type($file_to_upload['name'],$file_type) === "FALSE"){ // checks if file is good
        
        $uploaded_file = "FALSE";
        return $uploaded_file;
        exit;
        
    }
    
    elseif($file_to_upload['size'] > 2000000){ // if bigger than 2 Mb
        
        $uploaded_file = "FALSE";
        return $uploaded_file;
        exit;
        
    }
    
    $file_name = $file_to_upload['name'];
    $file_temp = $file_to_upload['tmp_name'];
    
    if(!is_dir($upload_dir)){//checks if upload dir exists

            mkdir($upload_dir);//if doesn`t, make it
            chmod($upload_dir,0777);//change the permissions of the new dir
            
    }
    
    $file_upload = "$upload_dir/$file_name";

    if(file_exists($file_upload)){//if the file allready exists
        
        $uploaded_file = "FALSE";
        return $uploaded_file;
        exit;
        
    }
    elseif(!move_uploaded_file($file_temp,"$file_upload")){//tries to move the uploaded file
        
        $uploaded_file = "FALSE";
        return $uploaded_file;
        exit;
        
    }
    else{//if upload and moving the file succeeded
        
        $uploaded_file = $file_upload;
        
    }
    
    //changes the permissions of the newly uploaded file (so we can later do something with it)
    chmod($uploaded_file,$permission);
    
    return $uploaded_file; //returns string with /path/to/uploaded/file
    
}


Ovo je druga funkcija, koja proverava extenzije fajlova. Namerno sam pravio sa substr jer ukoliko idem preko $_FILES['file']['type'] to moze biti koliko browsera toliko tipova. Mozda nije najsretnije resenje, jer (ovo jos nisam stigao da proverim), ukoliko neko promeni extenziju fajla recimo na .gif, a ustvari je nesto drugo, onda ce proci. Al` posto koristim u admin delu i ja up-ujem fajlove, dotle je ovo ok, barem meni. Trenutno je u stanju da proverava gif, jpg, png slike i word, excel i pdf dokumente. Ukoliko treba dodati neki novi tip, recimo swf samo napravim jos jedan niz, u switch ubacim case 3 i sibaj.

Code:

function valid_file_type($file_to_check,$file_type){

/*
    * This function checks is $file_to_check a valid file type. Currently it can check for jpg,gif,png,doc,xls,csv,pdf
    * More can be added. I grouped the picture types and the document types in 2 arrays
    * It cuts the extension of the file, check if its in the proper array. If yes returns TRUE, otherwise FALSE
    * for pictures $file_type = 1
    * for documents $file_type = 2
*/
    
    $extension = substr($file_to_check,-3);
    
    $picture_extensions = array(
    'jpg'=>'jpg',
    'JPG'=>'jpg',
    'jpeg'=>'jpg',
    'JPEG'=>'jpg',
    'png'=>'png',
    'PNG'=>'png',
    'gif'=>'gif',
    'GIF'=>'gif'
    );
    
    $documents_extensions = array(
    'doc'=>'doc',
    'DOC'=>'doc',
    'pdf'=>'pdf',
    'PDF'=>'PDF',
    'xls'=>'csv',
    'XLS'=>'csv',
    'csv'=>'csv',
    'CSV'=>'csv'
    );
    
    switch ($file_type){
        //pictures
        case 1:{
            if(!array_key_exists($extension, $picture_extensions)){
                return "FALSE";
            }
            else{
                return "TRUE";
            }
        }
        break;
        //documents
        case 2:{
            if(!array_key_exists($extension, $documents_extensions)){
                return "FALSE";
            }
            else{
                return "TRUE";
            }    
        }
        break;
        default: return "FALSE";
    }
    
}


I na kraju kako se koristi:

Code:

$uploadovani_fajl = upload_file("slika1.jpg",1,"slike_za_upload",0755);


ako je $uploadovani_fajl FALSE onda upload nije uspeo, a ako je uspeo onda sadrzi putanju do novog uploadovanog fajla, koju upisujem u bazu.

Voleo bih kad bi pogledali ovo, pa da malo prodiskutujemo, da li vam se svidja, kritike, predlozi, kako bi uradili, sta bi menjali (osim provere za extenzije :D) itd...
[ sorry @ 27.11.2007. 14:49 ] @
Probajte 'Zend Studio Neon' (citaj eclipse) podrzava ZendFramework projekte, Design View, beta koju sam ja skinuo sa zendovog sajta je naravno besplatna i radi sooper, fale mi par nekih caka kao find&replace iz Zend Studo-a ali...
[ Jezdimir Lončar @ 27.11.2007. 18:08 ] @
Citat:
sorry: Probajte 'Zend Studio Neon' (citaj eclipse) podrzava ZendFramework projekte, Design View, beta koju sam ja skinuo sa zendovog sajta je naravno besplatna i radi sooper, fale mi par nekih caka kao find&replace iz Zend Studo-a ali...

Evo upravo sad cu da skinem taj novi Zend Studio.
Link
Eto na linku iznad mozete pogledati ovaj novi Zend Studio...
[ Jezdimir Lončar @ 22.12.2007. 23:02 ] @
Izvinjavam se što kasnim s' odgovorom...
Skinuo sam taj studio i sve je to istina i da ima Design view i da je baš extra, IDE iz snova (kombinacija Zend-a i Dreamweavera), međutim, navika je čudo.
Od kad sam ga skinuo nisam ga možda 2 puta upalio, stalno kodiram u Dreamweaveru.
Eto, ko se nije navikao na neki drugi editor, neka proba sa ovim, jer stvarno olakšava život, ali ja ću ipak da se "držim" Dreamweavera.

[Ovu poruku je menjao Neohacker dana 23.12.2007. u 00:12 GMT+1]
[ enisonica @ 27.12.2007. 15:40 ] @
Cao,

I ja vjerovatno kasnim, al nisam inace aktivni forumas :(, pa se nadam da ce biti oprosteno :).
Koristim PHP 5, u kombinaciji sa QCodo (http://www.qcodo.com) framework-om... Zgodna stvar, nekoliko web aplikacija sam vec bez znacajnijih problema napravila uz pomoc QCodo-a. Dosta koda izgeneriše na osnovu šeme baze.

Zend ne koristim, već radim u Eclipse-u... zadovoljava potrebe, ali je možda loš kod debugiranja php koda...

Toliko od mene :)
[ my_hero @ 08.07.2008. 14:18 ] @
Ja vec 2 godine koristim Zend Framwork za kompaniju u kojo radim, to jeste odlican Frawmwork po mom misljenju najbolji, ali velika mana mu je sto
ima poprilicno dosta klasa/fajlova koje se ucitavaju pri svakom page view, tako da su mu perormanse mana, ako imate mogucnost instaliranja APC-a ili negog drugog opcode cache-a
onda se resava problem sa brzinom.

Za svoje privatne portebe sam napravio small footprint framework, koji ima logiku Zend F. al je mnogo brzi , jedna od mnogo dobrih stvari PHP5 je sto ima auto load klasa
po meni jedna od super stvari u PHP-u posto ne morate da razmislajet o include-ovima i samo picite po codu
G_Config::get()->path->data ;)
[ kazil @ 11.01.2009. 20:35 ] @
Ne verujem da sam ja ono gore pisao pre nesto vise od godinu dana... Uzas :D

Elem, da ne otvaram novu temu samo za ovo.

Online free knjiga (ima i download u PDF formatu) o Zend Framework-u, Surviving the deep end http://www.survivethedeepend.com/ jednom u nedelju ili dve nedelje autor dodaje nova poglavlja.
[ drugaivana @ 07.08.2009. 14:31 ] @
Koristim zend za neke Youtube API aplikacije, i mislim da je trenutno najkonkurentniji

DakiPro: Bez reklamiranja

[Ovu poruku je menjao dakipro dana 07.08.2009. u 15:47 GMT+1]
[ Davor Grubelić @ 13.09.2009. 18:54 ] @
Auh, sad kad vidim neke postove iz davne 2007. godine... :))

Zanima me kako sad stojite sa gore nevadenim stvarima.
Mislim, u ovoj temi je bilo razogovora o svemu. Custom framework riješenjima, zend frameworku, template engine-u.

Što se zenda tiče, odavno sam ga prestao koristiti jer se stvarno udebljao. Toliko je raširen u vidu broja klasa da se ponekad zapitam što je to ustvari zend framework.

Dakle, kako sad stojite sa kodovima, komadima software-a??? Gdje ste sada?
[ Jezdimir Lončar @ 14.09.2009. 13:16 ] @
Citat:
Davor Grubelić: Auh, sad kad vidim neke postove iz davne 2007. godine... :))

Zanima me kako sad stojite sa gore nevadenim stvarima.
Mislim, u ovoj temi je bilo razogovora o svemu. Custom framework riješenjima, zend frameworku, template engine-u.

Što se zenda tiče, odavno sam ga prestao koristiti jer se stvarno udebljao. Toliko je raširen u vidu broja klasa da se ponekad zapitam što je to ustvari zend framework.

Dakle, kako sad stojite sa kodovima, komadima software-a??? Gdje ste sada?

Korišćenje PHP5-ice neću ni da komentarišem, to je sasvim suvišno :)

Što se tiče korišćenja OOP-a, to se apsolutno podrazumjeva. Znači bilo da koristim neki FW ili koristim neka svoja rešenja u vidu većeg broja klasa pa ih pozivam po potrebi, OOP je apsolutno neizbježan.

Što se ZFW-a tiče, njega, da budem iskren, ne koristim. Jednostavno mi isti ne odgovara, iako ne sumnjam da je jedan od boljih.
Koristim trenutno Kohana framework, koji je unapređena verzija CodeIgnitera. Ovaj FW mi odgovara, ali za neke komercijalne, veće skripte.
MVC pristup takođe praktikujem u pisanju nešta složenijih aplikacija.

Citat:
Što se zenda tiče, odavno sam ga prestao koristiti jer se stvarno udebljao. Toliko je raširen u vidu broja klasa da se ponekad zapitam što je to ustvari zend framework.

Ovo je takođe jedan od razloga što ga ne koristim, međutim, čuo sam da možeš ti da izbaciš neke klase koje ne koristiš itd itd.

Citat:
Dakle, kako sad stojite sa kodovima, komadima software-a??? Gdje ste sada?

Evo sada dođoh iz škole, tako da sam sada kući :)