DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Izbor PHP Framework (http://www.devprotalk.com/showthread.php?t=3434)

dootzky 27. 08. 2007. 16:51

Izbor PHP Framework
 
ok - pretrazio sam forum na nekoliko nacina, i nisam nasao odgovor koji mi treba, pa cu biti "blunt" i pitacu tacno ono sto me zanima:

koji PHP Framework vi koristite, i zasto?

vidim da je u fokusu ili CodeIgniter, ili CakePHP, ili Symphony, a svi ostali "zaostaju", (ili mi se barem tako cini? o.O), ali me zanima kako i koliko ce to meni ubrzati rad u ovom smislu ->

ocu da:

1) imam reusable module, tipa userControl, accessCheck za svaku stranicu i sl, i da to samo implementiram u svoja CMS resenja bez razmisljanja, i kasnije prosirujem dozvole po potrebi

2) reusable table control.

ovo pod 2) je ruzno receno, ali grubo, ko god da je radio sa frejmworkom, zna sta je "SCAFFOLDING".

dakle, imam tabelu "proizvod", koji ima polja u bazi, npr:
- item_id, int, PK, autoinc.
- item_name, varchar (255)
- item_price, int
- group_id, int, FK

i sada da ocu da imam "brzi nacin" za klasicnu kontrolu: VIUD (View Insert Update Delete).

scaffolding radi tacno TO, ali "nije preporuceno" za korisnike, vec samo za debugovanje developera. :-/

evo konkretno, nisam bio lenj, danas sam procitao kompletnu literaturu i dokumentaciju za CodeIgniter, ali nekako nisam siguran da li mogu da "utilizujem" takvo resenje za sebe, da mogu da "stancam" CMS relativno brzo i lako, a specificne stvari bi svakako pisao od nule :)

jel' moze neko da mi kaze da li postoji framework za mene, koji bi mi omogucio tacno to? jel' CodeIgniter moze da radi TO? da pravim nezavisne module i kasnije kada pravim novi CMS, imam klasican kostur, ubacujem sve sto mi treba a ranije sam napisao, i posle eventualno prosirujem stvar za specificne zahteve klijenta.

hvala na vremenu, izvinjavam se ako sam ponovio temu, i hvala sto ste citali ovako dug post, hteo sam da budem eksplicitno precizan. :) :1040:

Bojan Zivanovic 27. 08. 2007. 18:12

Sto se tice stavke pod broj 2, predlazem da probas ATK, malo je cudan, ali kada se naviknes bukvalno sam odradjuje posao ;)
Jako praktican za Admin panele i slicne stvari. Generise view/add/edit/delete/list stranice, s tim sto svaki detalj mozes da promenis u hodu, mozes da dodajes svoje stranice, i sve to radi jako lepo (iz mog licnog iskustva)

dootzky 27. 08. 2007. 19:16

yo Bojane :)

vidis, interesantno, jos jedan moj kolega koristi i preporucuje ATK.
i video sam iz prve ruke sta on moze da uradi i kako, i bas za TO mi i treba neki framework, koji ce da mi ubrza izgradnju CMSova maximalno! :)

hvala za predlog, znam za Achievo ATK, ali sada cu ga svakako razmotriti jos ozbiljnije! :)

any more thoughts?
mislim - jesi li naisao mozda na jos neki frejmwork koji ti omogucuje da radis upravo to isto, samo na neki manje slozeni nacin, i da recimo nisi nasilovan da koristis frejmove i sl?

(generalno, meni je ideja u glavi ova: imam svoj KOMPLETNI cms, imam SVOJ userAuth klasu, imam svoj izgled, smarty - sve. ali za dosadne i ponavljajuce "edit Table" fazone, sa klasicnim insert, update, delete i view all sa filterima i sl -> da imam neki frejmwork :) jel' trazim previse? ^_^ )

BrainDamage 27. 08. 2007. 22:42

Uf, posle 2 godine "framework"-ovanja, strpljenje mi je stvarno na izmaku. Neces naci nijedan koji ti odgovara ni blizu 100%, uvek ce nesto da ti fali, ili ces vuci gomilu koda koji ti ne treba, ili ces nakon X projekata skontati da to moze drugacije/bolje... kako god, kad-tad moraces da se zavuces u tudji kod i tudji nacin razmisljanja da bi uradio nesto sto je mozda banalno, ali dok ukapiras sve - izgubices mnogo vise vremena nego da si pravio sve sam.

Mozda zvuci kenjatorski ovo "radi sam", ali ako vec imas svoj kod i znas sta ti treba - zasto onda ne zasednes jos malo pa i ovo uradis onako kako bas tebi odgovara da funkcionise, a ne da pravis mutante :)

Eh, puste srece da sam vreme koje sam bacio na testiranje svega i svacega iskoristio za svoj "framework"... :) :(

teknoledge 27. 08. 2007. 22:46

Evo iz prve ruke :), radim sa CodeIgniter-om vec par projekata i prilicno sam zadovoljan. Za auth postoji lib koji se zove freakauth i odlicno radi. Sto se tice scaffolding-a (CRUD), odlicna biblioteka je rapyd (official library), ili bolje reci framework u okviru framework-a :). Ova kombinacija je idealna za to sto trazis, cini mi se...

CodeIgniter je trenutno "najbolji" framework iz vise razloga:
  • mega easy to deploy (PHP4+)
  • radi prilicno brzo
  • logican i jednostavan
  • extra dokumentacija
  • gomila plugin-ova
  • ...

...sve u svemu po mom misljenju no. 1 ;)

dootzky 28. 08. 2007. 00:55

hmmm! odlicni odgovori. :)

@ brainDamage -
pa pazi, iskreno - ja sam se smorio, jer godinu ipo dana pisem svoje CMSove od NULE, bukvalno od PRVE linije koda, naravno, ustedim tu-i-tamo neke klasicne fore koje mi se provlace i koje imaju smisla, pa sam pravio svoje klase za autentifikaciju korisnika, i to je proradilo fantasticno, sada samo to koristim, itd itd itd, ali kapiram - hej - kad vec "profesionalci" rade tako,mozda bi i ja trebao da probam, right..? Right? :)

bottom line - hvala za iskustvo, i ja sam se vec upleo u testiranje i prilagodjavanje, i iskreno gubi se puno snage i vremena, a projekti stoje, i to je najgore, ali vidis - ja sam VEC NAPRAVIO svoj neki mini-univerzalni-form-editor, gde tipa samo prosledim kroz 4-5 linija ime tabele, koja polja ocu da editujem, i ostalo se samo pravi. dobijem "view/insert/update/delete" opcije, klasican pregled, i sve je vrlo fleksibilno , i najlepse od svega- to je MOJE resenje! :D yey! :)
problem? nije bas "lepo", i mislim da moze bolje, pa sam zato i krenuo u pohod da vidim kako su to "muskarcine" uradile, pa da naucim nesto, i da poboljsam svoje, ili da prosto preuzmem njihov rad, ako je zaista toliko bolji od mog. :)

ali svakako ti HVALA na insight-u. :1040: dobro je da znam da nisam "lud" ako hocu da koristim svoje klase i module koje jednom napravim kako treba, a ne zelim da uskacem u voz sa ostalima. :) ipak - za sada bi voleo da probam jos par komada, da vidim kako sve to radi, pa da se odlucim ;)

@teknoledge

extra. vidis, neki ljudi imaju drugacije misljenje, i stavljaju druge FWove na prvo mesto, ali cini mi se da se 'pravi momci' skupljaju bas oko CIa.
ja sam danas procitao KOMPLET dokumentaciju, sve sam skapirao, sad mi ostaje samo da se igram malo i da se osilim, i da vidim prednosti/mane takvog kodiranja :)

naravno, imperativ je da integrisem smarty u CI, ali vec sam video da je i to moguce, tako da to nece biti problem :1094:

a to sto si rekao, za "rapyd" - ako je TO ono sto sam trazio - castim te sa .. ma sa cime god oces! :D ustedecu i rad i vreme i trud i zivce i ubrzacu se i standardizovacu se itd itd itd.. naravno - ajde da ne skacem k'o magare pred rudu, prvo da VIDIM sta je to tacno i da ga testiram.

i naravno, hvala ti na vremenu da mi das upravo onaj info koji mi je trebao za CI :)

extra. prosto - i love this forum.
i should definetly hang out more here. :)

i evo ga interesantan link, za simpaticnu gomilicu FWova, pa da se uporede malo:
http://www.phpwact.org/php/mvc_frameworks

laku noc,
poz,
d

p.s. jel' sam ja lud, i ne mogu da pronadjem RSS feed za ovaj forum, ili on zapravo ne postoji? voleo bi da mogu da pratim sve nove teme preko RSSa, jer je tako beskonacno puta lakse i brze, uvek mogu brzo da se prebacim na ThunderBird i da vidim sta se novo desava na forumu.. :) ch33rzS!

BrainDamage 28. 08. 2007. 01:43

Imas u address bar-u u Firefoxu ikonicu za rss, ili zaviris u source :D Elem:
http://www.devprotalk.com/external.php?type=RSS2

I, nisam mislio da svaki posao kreces od nule, nego da imas gotove klase s kojima odmah mozes da pocnes raditi na konkretnom poslu, bez puno "predigre". Nista, gledaj, testiraj, izvuci najbolje i najlakse za sebe kako god to bilo - full tudji kod, pola-pola... :)

Bojan Zivanovic 28. 08. 2007. 02:38

Citat:

Originalno napisao dootzky (Napišite 41165)
any more thoughts?
mislim - jesi li naisao mozda na jos neki frejmwork koji ti omogucuje da radis upravo to isto, samo na neki manje slozeni nacin, i da recimo nisi nasilovan da koristis frejmove i sl?

Ne moras da koristis frejmove, imas teme bez frejmova, znam da na njihovom forumu postoje uputstva, nisam probao.
Opet, ATK deluje malo slozeno, ali kada ga provalis mislim da nema jednostavnijeg nacina, i da CodeIgniter s Rapyd varijantom ne moze ni da mu pridje (radio sam i s tim, da ne bude da pricham napamet ;))
CodeIgniter je odlican inace (koristim ga za normalne projekte), al za brzo pravljenje tih admin stvari ATK je bez premca.
Jedina mana ATK-a je nesto manje dokumentacije, al to dopunjava Wiki/Odlican forum/sam sors uostalom ;)

dootzky 28. 08. 2007. 09:19

@brain -> thx za RSS feed ;)

@bojanZ -> i'm on it, citam od jutros :) will report back with some usefull insight, i hope :cool:

Ilija Studen 28. 08. 2007. 09:27

Sav taj automatizam:

1. Ima svoju cenu
2. Ti je omča oko vrata ako hoćeš nešto radikalnije da promeniš

Zato su mi generatori draži (koji na osnovnu modela samo slože kontrolere i viewove pa kasnije sam preklapaš kako ti se sviđa). Mislim da Cake koristi taj pristup.

Generator odradi dosadni deo, ti samo prekrojiš kako misliš da je najbolje - pretumbaš kontrole, dodaš malo JS-a i sve složiš na način kako misliš da bi najbolje radilo, a ne kako tvoj framework misli da bi trebalo da radi. Generisani interfejsi su uglavnom đubre. To radi ali je često ružno, nepraktično i uz samo par manjih izmena može mnogo da se unapredi, a za to ti treba kontrola i dobro poznavanje kako stvari funkcionišu. Tačno se vidi razlika kada je nešto generično, a kada je u nešto uloženo malo sivih ćelija.

Što se u potpunosti automatizovanog backenda tiče prekočio bih PHP i koristio Django. Dokazano lepo radu i pod jačim saobraćajem, napravljen je pre svega za izradu CMS-ova pa je ste strane max upeglan, odlično dokumentovan i ima stvarno jak community. Bonus je sam Python. Kada su CMS-ovi u pitanju Django šije sve i jedan javno dostupan framework na sve i jednoj platformi.

dootzky 28. 08. 2007. 10:18

yo Ilija :)

ja sam tebe vec malo maltretirao na ovu temu, pa mi je drago da si se i ovde ukljucio! :)

anyway, svakako si u pravu, ja sada pokusavam da generalizujem sve svoje radove, tj. da ih apstraktujem, da vidim sta mi se konstantno ponavlja, i da to sredim i spakujem u module, i da ih onda sam pozivam po potrebi. :)

dakle, pokusavam da vidim jel' mi je bolje/lakse/brze/efektivnije/ispravnije da napravim efektivno "svoj fw", ili barem nesto slicno, sto ce sluziti meni i samo meni, za brz i modularan razvoj CMSova,

ILI:

prosto da se prilagodim nekom od vodecih fw-ova, i da ih maksimalno tweakujem prema sebi i svojim potrebama. :)

vidis, cini mi se da je CodeIgniter maximalno jednostavan, da ne kazem trivijalan, i onda mi mozda bas on moze odraditi deo posla, jer vec postoji napisana gomila stvari kao sto je "auto form validator", ili tipa neki simple JS kalendar, kontrola tabela i sl...

svakako ne treba zavisiti od ni jednog frejmworka, jer onda em moras da mu se prilagodjavas na besumucno niskom nivou, ili ako oni odluce da promene nesto, a tebi se bas ne svidja - imas problem :P

ajde citam i dalje, javljam sta sam uradio, svakako ocu da vam kazem moj finalni zakljucak na kraju :)

dootzky 28. 08. 2007. 10:39

e, ok - mislim da sam upravo ovo trazio:

Citat:

An elegant way to create CRUD interfaces (like CI scaffolding feature, but totally customizable)
to je "rapyd". :)
MOZDA, ali samo MOZDA sam na pragu necega :)
link za rapyd, ako je neko zainteresovan da pogleda: http://www.rapyd.com/

* props za teknoledge-a, on me je uputio na ovaj link :)

ali da ne mislite vi ostali da vas zezam ili ignorisem vase komentare - ocu da VIDIM kakav je rapyd, pa onda da vidim mogu li sam nesto slicno da izvedem :)

javljam dalje napretke :)

teknoledge 28. 08. 2007. 11:00

rapyd
 
Citat:

Originalno napisao dootzky (Napišite 41211)
e, ok - mislim da sam upravo ovo trazio:



to je "rapyd". :)
MOZDA, ali samo MOZDA sam na pragu necega :)
link za rapyd, ako je neko zainteresovan da pogleda: http://www.rapyd.com/

* props za teknoledge-a, on me je uputio na ovaj link :)

ali da ne mislite vi ostali da vas zezam ili ignorisem vase komentare - ocu da VIDIM kakav je rapyd, pa onda da vidim mogu li sam nesto slicno da izvedem :)

javljam dalje napretke :)

Evo da se ukljucim ponovo :)

Rapyd je malko komplikovan za shvatiti iz prve ali je prilicno mocan. Kao sto je Ilija rekao, postoje ogranicenja naravno ali kad ga skontas kako radi, uz malo "hack-ovanja" core-a (mislim na rapyd) mozes da napravis sta ti padne na pamet :1039:

Koristim ga za vec peti projekat i otprilike uradim ceo admin deo za dva dana i to sa skinovanjem kako mi se svidja. Konkretno ranije dok nisam koristio CI + rapyd, trebalo mi je barem 3 puta vise vremena da napravim isto.

Nemanja Avramović 28. 08. 2007. 13:08

Ja od skoro koristim CI, tako mi traže pa moram da se prilagođavam, ali za rapyd nisam znao... izgleda korisno... videćemo kad ga upoznam bolje :)

Petar Marić 28. 08. 2007. 13:26

Kada PHP programer priznaje - mora da je istina
 
Off Topic:
Citat:

Originalno napisao Ilija Studen (Napišite 41202)
Što se u potpunosti automatizovanog backenda tiče prekočio bih PHP i koristio Django. Dokazano lepo radu i pod jačim saobraćajem, napravljen je pre svega za izradu CMS-ova pa je ste strane max upeglan, odlično dokumentovan i ima stvarno jak community. Bonus je sam Python. Kada su CMS-ovi u pitanju Django šije sve i jedan javno dostupan framework na sve i jednoj platformi.

Smem li da te citiram? ;)

Ilija Studen 28. 08. 2007. 13:50

^ Naravno.

merjadok 28. 08. 2007. 15:01

Evo i jedan Java programer mora da prizna da je odusevljen čitavom koncepcijom istog.

jablan 28. 08. 2007. 15:08

I jedan C# programer... ;)

dootzky 28. 08. 2007. 16:47

phuuuhhhhh..... people -> usradoh se (sa oprostenjem), dok sam pretrazio GOMILU frejmworka, i moram da se slozim donekle sa Ilijom:

- STA CE MI FRAMEWORK? ili ako ti treba - napisi ga SAM! :) da ne bi zavisio od njih i ucio sta moze a sta ne i sl. :P

a sta meni esencijalno treba? CRUD. user auth. i jos CRUDa. :)

vec sam nasao neke CRUD code generatore, mozda to mogu ili da koristim, ili da vidim kako su napisali kod, pa da napravim licno svoj templateCrud i resim se muke :)

evo npr linka:
http://www.phpobjectgenerator.com/

mada je to mozda malcice i neozbiljno resenje, ja razmisljam da napisem svoju klasu, gde bi samo rekao koju tabelu ocu da radim, koja polja, kojeg su tipa ta polja, i eventualno neka slozenija vezivanja sa FKovima i to je to..

mozda neko vec zna za slicnu klasu? znaci - ne treba mi ceo frejmwork. :)
vec koristim izuzetno lagan i koristan i poslusan smarty, sve mi radi kako treba, sve kontrolisem - ali CRUD mi je ocigledno bio potreban.

any thoughts?

kako vi resavate, npr. kada u CMSu pravite kontrolu proizvoda? (bilokojih).
ili kontorlu grupa proizvoda, sa orderingom i sl? ili kontrolu korisnika i sl?

mora da koristite NEKE napredne fore? :) please! :D vec 4 dana citam/radim/ucim ovo, poludedoh!! (jel' to uopste rec?) :D

dootzky 28. 08. 2007. 16:50

cisto da ne bude zabune, konceptualno mislim na nesto ovako:

http://www.oxyscripts.com/manuals/sy...affolding.html

samo BEZ frejmworka, ocu da to uradim sa klasom koju mogu da implementiram i kontrolisem po potrebi :)

McChoban 31. 08. 2007. 08:26

Neko je vec preporucio Cake, pa da podrzim.

Cake ima svoj codegenerator, znaci moze on i da scaffolduje, ali ne mora - moze na osnovu tvojih parametara da ti izgenerise view i controller koji posle menjas kako hoces.
Dalje framework ima relativno elegantno organizovan MVC, poprilicno jasnu filozofiju, i iako nema prebudzene biblioteke dodataka kao neki drugi, ima sve osnovne stvari koje su neophodne, ukljucujuci tu i razradjen i detalan ACL (access control layer).
I sami templejtovi za view-e su cist html + php, izgledaju dosta citljivo, tj nece ti nedostajati smarty mnogo.
Plus postoje helperi koji omogucavaju pravljenje formi sa sve validacijom ocas posla. (A sve to naravno moze i da se izgenerishe).

Jedina velika mana je sto postoje 2 verzije, "stabilna" 1.1 i alpha 1.2.x,
ova prva je pomalo zastarela, a druga je nekompatibilna s prvom, a dok prva ima jadnu dokumentaciju, druga ima jos jadniju.

Na sajtu postoji i "bakery", sto je nesto izmedju wikija, code repositorija i zbirke tutoriala, samo je krs organizovan, pa treba dosta zivaca da nadjes to sto ti treba i snadjes se u nakaradnoj filozofiji organizacije takve vrste sajta...


PReporucujem da odvojis jedno nedelju dana i natenane se igras sa frameworkom, i isprobavas razne stvari, pitas na irc kanalu ako bas zagusti (ljudi su zaista predusretljivi i kanal je prepun, tako da brzo dobijas odgovor).

Dakle, jadna dokumentacija, ali mocan i dosta fleksibilan code generator sa lepom filozofijom. I po defaultu podrzava "lepe" url-ove. Mislim da mu treba dati sansu, samo kao sto rekoh treba se naoruzati strpljenjem i odvojiti neko vreme za ucenje, ne zbog tezine nego zbog dokumentacije.

dootzky 31. 08. 2007. 16:02

gledam cake, izgleda ok, ali je dokumentacija zaista ocaj :P
cak i na njihovom "wikiju", sada je to valjda za njih "Bakery" -> tamo pise "If you are really desperate you can read this mess, or help us fix it.."

tako nesto :) zasu! :)

anyway -> uspeo sam :P
napravio sam svoje 2 klase za pomoc prilikom CRUDa, ali nisam presrecan resenjem, nije me ubrzalo onoliko koliko sam ocekivao. radio sam juce 14h straight. 8h, pa pauza, pa jos 5-6h.. :P oci mi ispadose.
ali je uspelo, proradilo je na kraju.

kazem - ipak, morao bi to jos da sredim, ali generalno radi.
imam 2 klase: Form i Field.
bazicno -> napravim novu formu, u njoj drzim niz Field-ova, i onda imam built-in funkcije u klasi Form, tipa "validate()" gde se za svako polje, u zavisnosti od njegovog tipa podatka proverava validnost unosa, ili da li je required ili ne, i naravno imam funkciju tipa "showForm()", koja ce da ispise komplet formu, u tabeli, sa sve pocetkom i krajem forme, kao i dugmadima submit i cancel :P

i to radi, kazem, uspelo je, imam i univerzalni "View" cele tabele iz baze, i default akcije, sortiranja, brisanja, stagod - i to je to :)

ali interesantno, NIJE ME TOLIKO UBRZALO? :P
moracu ocigledno jos da proradim. :)

eto, cisto sam hteo da vam javim da sam uspeo da napravim nesto svoje (sto je ipak profunkcionisalo), ali da cu takodje da nastavim da se koncentrisem na neki od frejmworka, ako nista drugo - radi ucenja i razmisljanja :)

veliki poz, i hvala svima na pomoci! :)

McChoban 01. 09. 2007. 01:25

Ako sam ukapirao, ti si uradio code generator? Ili je u pitanju neka virtualizacija podataka, tj pravis neki meta-kod koji bi ti olaksao rad?

Iako meta-kod zvuci jako elegantno, licno sam za dobro napravljen generator "pesackog" koda. Naravno "pesackom" kodu nista ne smeta da bude OO i prijatan za oko i upotrebu. Ponekad je keep-it-simple-and-stupid najbrzi nacin da se posao zavrsi - a kao sto rekoh to sto je simple i stupid ne mora da znaci da je brljotina :)

A sto se vremena tice - ne znam da li pricas o tome da si potrosio gomilu vremena da napravis tvoje CRUD-klase ili mislis da sama usteda prilikom koriscenja istih nije neka?

dootzky 01. 09. 2007. 13:54

yo covek! :)

pa pazi - napravio sam ... code generator. da. :) klasu koja ce da generise formu, elemente forme i ostalo, dakle pripremi mi kompletan HTML kod i logiku rada, sa sve new/edit/delete opcijama i pregledom tabele i sl.

i slazem se sa tobom, u pravu si kada kazes da je nekada peske nesto i brze/lakse/bolje/pouzdanije uraditi. prosto - zapleo sam se malo :) precenio sam se, ali sam ipak uspeo u onome sto sam hteo. jedina mana projekta je bila sto nisam mogao da isplaniram upotrebu klase, pre nego sto je napravim, ali sada i to radi, i sve je ok. :) a ono sto ti kazes - za vreme -

- potrosio sam 4 dana da napravim CRUD generator, ali isto tako ne vidim veliku razliku u "brzini kodiranja" sa tim klasama, i peske. :)

mislim - ok - postoji razlika, svakako, ali to vreme koje ustedis da pises rucno svaki element forme i sl - izgubis kasnije jako lako kada se zakomplikuje stvar sa nekoliko FKova ili slicnih specificnih combo/checkbox opcija, koje moras rucno da popunjavas i da budzis klasu :P

sve u svemu - mozda je peske brze, ali gledam da se automatizujem.
citam i radim i ucim svakako CI + Rapyd, cisto da bi video njihov pristup, pa cemo videti sta ce biti :)

McChoban 02. 09. 2007. 15:54

E pa to. I ja sam bas nedavno pisao neki svoj code generator, jer sam shvatio da mi za cake treba vremena, kojeg nisam imao... Pa shvatih da cu brze napisati code generator nego da sve radim peshaka ili da se mucim sa, jeli, frameworkom kojeg ne znam.
Verovatno svaki normalan php developer ima svoj (pseudo)framework ili bar prirucni generator koda, samo sam ja malo bio van php-sveta pa sam zardjao (zato sad ne mogu ocima da vidim onaj moj stari ne-objektni kod, pa smatram da je to bila prednost :) )

kaspar 02. 09. 2007. 20:40

frameworks
 
Evo da prilozim i ja svojih par centi.

U globalu frameworke mozes da podelis po stepenu automatizacije koju ti pruzaju i, takodje u globalu, je taj stepen automatizacije povezan sa nivoom slobode koju ti omogucavaju u smislu organizaovanja samih elemenata od kojih pravis svoju aplikaciju. Takodje razlikuju se znacajno i po kvalitetu implementacije, dokumentacije, organizacije ...

Po automatizmu Cake prednjaci, iza njega je CI a posle toga na zacelju nepravedno zapostavljeni Zend :) Ja poslednjih nekoliko meseci radim u Cake frameworku i mogu da podelim detaljnije iskustva o njemu, CI sam video ali nisam detaljnije ulazio u problematiku a za Zend se sve vise interesujem.
Cake je port Railsa na PHP i samim tim tezi funkcionalnostima koji trenutno ima Rails, sam potencijal PHP-a je drasticno manji od Ruby-ja pa mi se cini da su nacin na koji se implementiraju resenja u Cake-u jako konfuzni i nepregledni. Ovo je veoma vazno jer zbog nedostatka dokumentacije i potrebe da se stalno ulazi u kod da bi se videlo kako odredjeni metodi u stvari funkcionisu. Za svakog neiskusnog programera u PHP-u ovo je prosto nemoguca misija.
Druga stvar koja kod Cake ne valja je to sto verzija 1.2.x.x obecava puno funkcionalnosti ali za sada je kvalitetno implementiran jako mali broj njih, u sustini ovo nije ni cudo jer je jos uvek u alpha verziji ali ipak za nekog ko zeli da koristi iste funkcionalnosti treba naglasiti da one uglavnom rade ali znaju nekada da debelo namuche.
Ono sto ipak izdvaja Cake kao framework jeste implementiran ActiveRecord koji omogucava da se na jednostavan nacin prave relacije izmedju tabela i automatski izvlace podaci iz zavisnih tabela. Poslednjih par nedelja sam radio na nekim behaviorima za Cake kako bi na efikasan nacin implementirao multijezicnost i uvideo da je sama implementacija sloja ka bazi jos uvek nedovrsena i malo zbunjujuca za nadogradjivanje jer mi se cini da ne postoji sistematicnost u implementaciji pa se u pojedinim kontekstima kod ponasa potpuno drugacije od onoga sto ja od njega ocekujem.
Sto se generisanja sadrzaja tice u poslednjih par commita je dodata mogucnost da se kreiraju templejti za CRUD viewe tako da se to sada moze prilagoditi dizajnu pogotovo za admin deo gde se dizajn prakticno prenosi sa projekta na projekat.
U globalu Cake jako moze da podigne produktivnost za programere ili timove koji se baziraju na implementaciji sajtova jer se dosta koda koji se kreira na projektima moze da ponovo koristi, komponente, helperi, view-i, takodje postoji i dosta kod koji moze da se nadje po internetu, mada iskreno mislim da je uglavnom jako loseg kvaliteta i ja sam najcesce video ideju i napisao svoj kod umesto da uzimam tudje komponente, behaviore ...
Sto se tice razvoja neke globalne logike aplikacije izvan MVC frameworka Cake mi deluje veoma skuceno, primer je recimo implementacija CMS-a u kome bi MVC deo bio samo element za izvrsenje akcija a logika aplikacija stajala iznad toga, u Cake mislim da je to jako tesko izvesti zbog doslovnog pracenja principa "Convention over Configuration" koji prakticno namece neke principe po kojima moras da se ponasas ako zelis da stvari rade. Mozda ja jos uvek nisam shvatio nacin na koji mogu ovo da uradim bezbolno.

U poslednje vreme se sve vise interesujem za Zend framework koji je nesto za sta predvidjaju da ce da ostavi PHP u zivotu :). Uglavnom su PHP programeri jako malo koristili OO model koji je dosao sa PHP5, inace sam PHP5 nije nesto preterano uspeo da preuzme dominaciju od PHP4 ali to je neka druga prica. Zend Framework koristi sve potencijala OO modela i sam po sebi zahteva 5.1.4 ili cak 5.2 pa navise da bi radio jer koristi PDO drajvere i ostale PHP novotarije :) Ono sto sam o Zendu uspeo da zakljucim je da pruza veliku slobodu za projektovanje logike na visem nivou iznad MVC koncepta jer praktivno tera korisnika da koristi MVC kao element svoje aplikacije a ne da mu aplikacija bude u MVC konceptu. Kod je jako kvalitetan, baza profesionalnih developera koji ucestvuju u razvoju je siroka i ozbiljna a i zajednica mi se cini sve veca. Zend za sada nema implementiran ActiveRecord (bar kako sam ja shvatio) ali mislim da postoje neke nezavisne implementacije. Ono sto je vidljivo kao sloj ka bazi koji bi se koristio u kombinaciji sa ZF je Doctrine ORM PHP sloj http://www.phpdoctrine.org/ koji je trenutno u 1.0RC1 verziji.

CI nisam probao ali mislim da je on negde izmedju Cake i ZF po automatizaciji, cini mi se da je dosta kvalitetniji kod od Cake-a i da ima dosta bolju dokumentaciju ali ne tako veliku bazu korisnika.

Krajnji zakljucak:
za brzu implementaciju jednostavnih sajtova sa osnovnim funkcionalnostima treba koristiti Cake jer znacajno podize produktivnost i ponovno koriscenje koda.
Za nesto ozbiljnije kao sto je recimo izrada proizvoda na kojem bi se zasnivao razvoj firme ipak mislim da za sada treba pribeci nekom drugom resenju. Mozda se sa vremenom Cake dovoljno razvije ali mislim da ce Zend da ga pregazi na polju ozbiljnih PHP aplikacija veoma brzo.


Koliko teksta a slika nigde :)

Misha 25. 09. 2007. 17:55

Meni CakePHP deluje kao mrtav projekat!!!

CakePHP je mozda najbolja kopija Ruby on Rails-a u PHP svetu. Dok Zend Framework ide nekom svojom putanjom, koja cini mi se vise odgovara "jeziku" kakav je PHP.

Pocetkom ove godine sam krenuo da ucim Cake za neki projekat ali odustao kad sam shvatio da tada nisu bile zavrsene jos neke bitne stvari, a i da je poprilicno bugovit kad nesto zaista krenes da pises u njemu.

S druge strane njegova implementacija ActiveRecord patterna se ispostavila kao poprilicno impresivna. Samo zbog toga, sam lepo uzeo i napisao jednu PHP skripticu, koja spideruje stranu na CakePHP siteu gde moze da se vidi koliko je jos ticketa ostalo do sledece verzije CakePHP-a ... stavio skriptu da se pokrece CRON-om na moj site i da mi salje emailom broj tiketa dvaput mesecno ... pa reko kad to malo odraste da mu se ponovo posvetim ...

Zakljucak nije bas happy za Cake ... U proteklih devet meseci broj tiketa konstantno oscilira oko 250!!! Tekuca verzija je ista kao i pre 9 meseci ... razlika je u trecem broju verzije ... i tako ...

Inace ja sam do pre godinu dana koristio CodeCharge za pisanje web aplikacija (custom CRUD-oliki code) a vec godinu dana koristim Drupal za sve ...

Em je strava kao CMS em je vremenom postao zavidan framework. Trenutno u njemu pisem totalnu custom web aplikaciju za "All American Football League" site, za menagerovanje prijava igraca, nimalo jednostavna zvercica. Vec je napisano brdo strana sa totalno custom logikom, koristim Drupal iskljucivo na nivou framework-a ... i vrlo sam zadovoljan ... ako nekog zanima mogu da podelim iskustva i detalje o tome ...

Cheers ljudi!
Misha

robi-bobi 26. 09. 2007. 10:41

imam prijatelje koji bi da sami prckaju svoje sajtove, zbog toga sam ga pre nekog vremena i razgledavao

nije li to gotov cms (all-in-one), a ne framework?

naravno ukoliko je napisan dobro, ti bi mogao da ga koristis kao framework

kazi neka iskustva, a pitanja ce sama doci :)

dootzky 26. 09. 2007. 11:39

pa, vidis, i ja sam stekao isti utisak, tj. da je Drupal gotovo resenje, kao ... phpNuke, Joomla, i slicna poznata imena.

drupal NIJE framework, quote sa sajta: "Drupal.org is the official website of Drupal, an open source content management platform."

dakle, drupal je dobar, ali to je 'samo' jos jedan CMS. :)

a framework je nesto sasvim drugo, zar ne? ;)

McChoban 26. 09. 2007. 13:13

Mislim da je covek mislio na framework oko kog je CMS slozen. Nisam gledao Drupal, tako da necu da lupam.

Inace, ovo sto Misha kaze za Cake nije daleko od istine - projekat se vec neko duze vreme, na zalost, ne pomera s mrtve tacke...
Ne bih da ponavljam koliko me nervira sve ostalo oko Cake-a, tako da sam definitivno odlucio - radim svoj framework, pa makar bio i bangav.
Vec sam napravio neki codegenerator za activerecord, koji ce naravno biti zesce doradjen jer imam nekih cool ideja, a takodje sam osmislio i strukturu i kako ce to da funkcionishe... Prvom prilikom ga radim, samo da u'vatim vremena.

Misha 26. 09. 2007. 20:16

"Drupal.org is the official website of Drupal, an open source content management platform."

... je bukvalno prva recenica sa Drupal site-a jelte, dok sam ja moj komentar dao iz perspektive nekog ko je "malkice vise" zasao u Drupal pricu :-)

Da, kao sto vec rekoh Drupal je CMS koji je vremenom postao i strava framework. Inace dootzky, cinis golemu gresku sto Drupal stavljas u isti kos kao i Joomlu i phpNuke. To jednostavno ne mere ... phpNuke je pregazilo vreme i on vise nije u igri, a Joomla je toliko lose napisana da je sa stanovista programera al totalno neupotrebljiva.

Evo da potkrepim tvrdnju da Drupal jeste I framework sa nekoliko detalja:

- FORM API, deo Drupala koji olaksava pisanje custom formi, sve sa validacijama i custom logikom.

Ogromna stvar za mene je i sto postoji standardan nacin za pisanje custom form elemenata. Recimo za moj tekuci Drupal projekat sam napravio novi Drupal form element koji koristis iz FORM API-ja kao i sve ostale ugradjene elemente. Izgleda kao obican select element, stim sto ima <Other> opciju. Kad kliknes tu opciju pojavi se textbox desno od select elementa u koji mozes da uneses sta god hoces. Niste svesni koliko je lako ovo bilo napisati, a sad mogu da ga koristim na prirodan nacin i u buducim projektima. Isto tako sam napisao i svoj custom file upload, sa automatskim pravljenjem i prikazivanjem thumbnail-a za slike za neki raniji projekat, koji iskoristih i u ovom. Sto jebe kevu koliko je korisno moci raditi!

- TABLE f-ja, olaksava pisanje custom tabela sa podacima, sve sa sortiranjem i paggingom.

- DB abstraction layers, ima DB f-je koje automatski vrse zastitu od SQL injection napada, i koje su DB agnosticne. Znaci kad pozelis da predjes sa MySQLa na PostgreSQL to ti je poprilicno olaksano.

- HOOKS, za mene THE killer feature Drupala. Drupal dolazi sa 50-tak hookov-a, a i ti kao programer mozes da pises nove. Na primer postoji hook_form_alter(). Sa tim hook-om imas moc da izmenis BILO KOJU formu na site-u, Drupalovu ili iz nekog third party modula, sve jedno. Recimo mozes da izbacis/ubacis element iz forme, da ubacis dodatnu logiku koja ce se izvrsiti za zeljenu form operaciju, da ubacis dodatne validacije. U mom tekucem projektu sam zahvaljujuci ovome tako izmenio login/register forme Drupala da ih ne biste prepoznali (evo pogledajte: http://www.allamericanfootballleague.com/players/ , kliknite Yes za malo JS-a)

Kad sam istrazivao kojim putem da idem, vrlo ozbiljno sam seo i uporedio: CakePHP, Symfony, Rails, Django, Zend Framework i Drupal. Ispalo je da Drupal ima najbolji balans svega onoga sto ja mislim da framework treba da ima. A on cak i nije zapocet kao framework ... sto bi rekli izgleda smesno al deluje! :-)

Al niste svesni koliko je Drupal razvijena platforma! Jednostavno nema sanse da detaljnije opisem sve ono sto ima:

- TAXONOMY, ogroman pod API za kategorisanje bilo cega!
- SEARCH, ogroman pod API za indeksiranje i pretrazivanje bilo cega na site-e!
- LOKALIZACIJA I INTERNACIONALIZACIJA, i statickog i dinamickog sadrzaja.
- FILES, IMAGES, pod API-ji za rad sa file-ovima (private download ...) i slikama (resizing, croping ...)
- USERS & USERS AUTHENTICATION, ogroman pod API za rad sa korisnicima

Za mene isto golema stvar ... dokumentacija ... jedna od najboljih koje sam ikada video u open source svetu ... http://drupal.org/handbooks ... plus ima nekoliko knjiga, jedna od njih namenjena bas programerima, koju sam procitao i preporucujem: "Pro Drupal Development"

Da nisam naleteo na Drupal verovatno bih i ja pisao nesto od nule ... ovako pisem reupotrebljive module za Drupal koji odgovaraju mojim programerskim preferencama. Vec imam napisane module sa brdo dodatnih funkcionalnosti za rad sa bazom, file-ovima, stringovima i form-ama. Recimo za nekoliko sati sam uspeo da napisem formext modul, koji mi omogucava da preko web interface izgenerisem FORM API strukturu za bilo koju tabelu u bazi. Sad zahvaljujuci tome (i drugim nekim stvarima) mogu da napisem CRUD za bilo koju DB tabelu za nekih 2 minuta!

Tako da da ... definitivno preporucujem Drupal bas kao framework!

nixa 26. 09. 2007. 20:27

Pravo je pitanje , koliko si ti vreman uložio da naučiš kako Drupal funcioniše, da prilagodiš svoj način razmišljanja prema njemu ?

U suštini mogao si da uzmeš i typo3, imap bi mnogo veće perfomanse ... ali vreme je bitna stavka

Misha 26. 09. 2007. 20:52

Stvarno ne vidim zasto be learning curve bilo "pravo pitanje"?!?! To je samo jedno od pitanja koje sam ja postavio sebi kad sam birao platformu. Istina zbog njega sam odustao od Rails-a trenutno, jel bi to znacilo da treba da naucim Ruby, Rails, Rails biblioteke.

Prilagodjavanje nacina misljenja nije bio problem al uospte. Imam ja svoje stavove definitivno, al isto tako nisam ni tvrdoglava budala ... ako naletim na nesto sto je superiornije u odnosu na moj dotadasnji nacin razmisljanja rado ga usvajam. I to se dogadjalo upravo sa Drupalom ... Za mene je pravlje pitanje koliko je aplikacija dobro napisana, kolliko je to dobar inzenjering ... ako jeste prilagodjavanje nije stavka al uospte ... A to je upravo slucaj sa Drupalom ...

Ne zaboravi da je Drupal VRLO lagana aplikacija, zip file sa instalacijom ima 733KB, koliko (puta vise) ima Typo btw? :-) Meni typo nije cak usao ni u uzi krug izbora, deluje kao zesci bloatware ... sto opravdava nekom enterprise etiketom ...

Dakle sto se learning curve-a tice, ja sam Drupal naucio radeci prvi projekat za klijenta ... sto je trajalo nekih 2 nedelje ... Shvatio da tu neceg ima, skino "Pro Drupal Development" sa neta, procitao prvih desetak poglavlja celih, za nekih 2 nedelje laganog citanja uz redovan posao ... ostale citam po potrebi ... i to je to ... vec potvrdjeno da je vreme bilo dobro ulozeno!

Misha 26. 09. 2007. 20:56

E da ... bre oklen ti ideja da Typo3 ima bolje performanse od Drupala :-)??? Jel imas neke konkretne podatke/testove, voleo bih da vidim ...

Evo ti nekih site-ova koji koriste Drupal:
http://appel.nasa.gov/
http://www.playboy.de/
http://www.mtv.co.uk/
http://usmagazine.com/
http://www.observer.com/thepoliticker/

Ne bi reko da bi iko od njih uzeo nesto sto nema dobre performanse.

noviKorisnik 26. 09. 2007. 21:33

Ok, smiri loptu malo :-) ... postoji takav listing sigurno i za Typo3, a Google kaže: http://www.google.com/search?q=typo3+vs+drupal

Misha 26. 09. 2007. 22:13

Hmmmmm hvaaaaaala :-) al vise bi voleo da cujem sta nixa ima da kaze o tome nego google ... a sa listom sam samo hteo da pokazem da je to zapravo malo nebitna poenta sa njegove strane ... mislim bila bi bitna da Drupal ima katastrofalne performanse sto nije slucaj ocigledno

A da uzmem da koristim nesto tako kompleksno kao typo morao bi da bude bar 10x brzi!!! ... posto je toliko puta veci ;-)

ja se malo i zezam u razgovoru btw ... slobodno preuzmite loptu :-)

nixa 27. 09. 2007. 01:44

ne radi se o tome, ne radim ni sa jednim cms "framework" , nego mislim da Drupal nije rešenje koje može da reši sve probleme ( i ako može, bila bi velika budževina ... )

dootzky 27. 09. 2007. 09:32

interesantno kako se prica razvila u pravcu Drupala.. pogledacu to malo detaljnije, posebno taj handbook, tako se najbolje vidi kako su razmisljali momci koji su ga pisali.. i naravno da je drupal "brzo" resenje, ali pitanje je ovo sto kaze Nixa -> koliko brzo TI mozes da se adaptiras njemu? ;)

ajde probacu ga malo temeljnije, da ne pricam u prazno, pa se javljam sa reviewom par dana kasnije :P

teknoledge 27. 09. 2007. 09:38

Jos jedan downside za drupal, drastichno je sporiji od slichnih resenja. Za bilo koji veci site sa 100.000 + pageviews per day trebace ti standalone database server zbog gomile query-ja koje izvrsava za render svake strane.

Misha 27. 09. 2007. 09:55

"drastichno je sporiji od slichnih resenja" ?!?!

Ljudi odakle vam ovakvi zakljuci? :-) Ovo ne moze da bude dalje od istine ...

Niti broj querija koji se izvrsava moze da bude indikacija brzine site-a ... Recimo sta mislis teknoledge-u da li je isti query koji ima JOIN naspram obicnog SELECT-a? I kolika je razlika ...

Inace Drupal ima plus strava kesiranje plus throttle module koji sluzi fine tuneovanje performansi ... znaci ako imas stranu koja je maltene staticka, mozes da namestis da se i izvrsava brzinom staticke ...


Vreme je GMT +2. Trenutno vreme je 13:18.

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.