![]() |
#1 | |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
![]() ![]() |
![]() <dpt><edit user="bluesman">Ovo je "presečen" thread koji je otišao off topic pa je dinke pokušao da od haosa napravi 2 smislena thread-a, a da bi bilo jasnije onima koji se kasnije uključuju morao sam da dodam ovaj komentar jer ovako izlgeda kao da počinje iz sredine. Obrisane su neke poruke u kojima se direktno obraćamo jedni drugima koje nemaju veze sa temom. Obrisao sam i ja neke svoje poruke tako da je tema pročišćena od privatnosti koliko god je moguće. Hvala dinke
![]() Citat:
PHP kôd:
Primer iz života (stranica koja prikazuje sadržaš carta): PHP kôd:
![]()
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog Poslednja izmena od bluesman : 17. 11. 2005. u 18:11. |
|
![]() |
![]() |
![]() |
#2 |
Python Ambassador
Master
|
![]() Ilija, mislim da si upoznat sa mojim mišljenjem o ekstenzivnom mešanju php-a i html-a, kao i korišćenju php-a kao template jezika za sam php:
loša ideja IMHCO.
__________________
Python Ambassador of Serbia |
![]() |
![]() |
![]() |
#3 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
![]() ![]() |
![]() PHP je templating jezik i nekako mi ideja pravljanje posebnog template jezika za templatate jezik nije baš naj naj. Doduše, više o tome na jednoj starijoj temi. Moje mišljenje o ovoj temi je poznato svima, a iz mog iskustva (nešto obilnije od tvog
![]()
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog |
![]() |
![]() |
![]() |
#4 |
Goran Pilipović
Sir Write-a-Lot
|
![]() Iz mog iskustva ( nesto obilnije od tvog
![]() Ja još ni u jednoj poznatijoj aplikaciju, uključujući i ovaj forum, nisam video bilo šta slično onome što ti radiš. Nije da sam se nešto nagledao tih aplikacija, možda par takvih, ali siguran sam da mnogi odavde mogu da potvrde ovo što pričam. Meni je neshvatljivo zasto ti pises: <?= $ordered_product->getProductId() ?> umesto: <?= $ordered_product['productId]; ?> Imaš tendenciju (a to sam ti već rekao) da komplikuješ stvari. Ako mi objasniš kao da imam 6 godina šta ti dobijaš ovakvim kodom, koje su tu prednosti, mogu da ti obećam da ću i ja da počnem da pišem na isti način. ![]() 90% funckija u tvom kodu vracaju varijablu koja se zatim echo-uje. Ti znaš da svaka funkcija pri kompajliranju rezerviše određene resurse i mislim da tvoj kod po pitanju resursa uopšte nije optimalan. Neću da grešim dušu jer nisam 100% siguran u ovo što ću ti reći ali mislim da ćeš, pošto nisi do sada radio ništa baš veliko, imati veliki problem po pitanju resursa jednom kada budeš napravio neki veliki web projekat. Osim to je problem sto covek treba da nagadja sta se dešava iza ->getProductId(); totalno mi je nejasan koncept zasto tako radis za ovakve trivijalne stvari? Sada ja uzmem da pogledam tvoj kod, ili ne daj Bože nesto izmenim, kao sto sam imao priliku "jedared", i kada vidim <?= $ordered_product->getProductId() ?> razmisljam da li on u toj funkciji čita iz baze, sa diska, ko zna šta radi. Zatim moram da otvorim 4 klase da vidim gde je getProductId(), i onda pravo razočarenje, funkcija getProductId () samo vraća nešto tipa: return $this->product_id; I onda tako imaš po jednu funkciju za svako polje u bazi (doduše ti si malo elegantnije to rešio ali je i dalje smor.). Ili recimo: CartService::instance()->getOrder()->getOrderedProducts() umesto $CartService->order->products; ili $CartService->order['products']; Što kažu "pričaj srpski da te ceo svet razume" ja bih rekao "pričaj programerski da svaki programer razume tvoj kod". Iskreno, to sam ti već jednom rekao, ne znam gde, kako ili od koga si učio programiranje ali ovakvim načinom jedino postižeš to što si "radikalan". Samo nemoj sada da mi daš neki link na neki blog ![]() Nije ni čudo da imaš takvo mišljenje o Smarty kada tebi jedan smarty template izgleda ovako: PHP kôd:
Mislim, nisam hteo da (ponovo) pričam o ovome, naročito zato što smo već pričali i privatno i javno, međutim ti i dalje u svojim postovima insistiraš da ceo svet ne zna šta radi, pa rekoh daj da to rešimo već jednom. ![]()
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
![]() |
![]() |
![]() |
#5 | |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
![]() ![]() |
![]() Ajmo opet redom:
1. <?= $ordered_product->getProductId() ?> - <?= $ordered_product['productId]; ?> Koristim Propel, najbolji persistance layer za PHP (PHP port Torque projektu). Ideja je prilično jednostavna: na osnovu XML šeme se automatiski generišu sve potrebne klase i DDL. Dakle, sve te klase i relacije među njima za mene pravi skripta (potrebno vreme od 4 - 7 sekundi). Ja ih samo koristim. Za ručno pravljenje istih bilo bi mi potrebno par sati. Pošto PHP5 ima podršku za enkapsulaciju ne mogu da pozivam $product->id; iz templatea jer je ID protected polje (kakvo i treba po OO konceptima). To je samo primer dobrog programiranja. Praktičnost je malo narušena, ali kad te metode dobiješ "džabe" (generisane su za tebe) onda nema šta da se brineš. Persistance layeri (ORM) kao koncept je prilično jednostavni i normalni u svim "jačim" programskim jezicima, posebno u Javi. Mislim da bi trebalo da pročitaš malo više o njima... Meni sam Propel štedi 50% vremena koje sam ranije ulagao u razvoj (bez preuveličavanja). Probaj, olakšava život. 2. Imaš tendenciju (a to sam ti već rekao) da komplikuješ stvari. Moguće. Ali danas nešto za šta mi je ranije trebalo 2 nedelje radim za 2, 3 dana (opet bez preuveličavanja). Meni je bilo bitno da povećam sopstvenu produktivnost, u čemu sam uspeo. Biraš alat prema svojim potrebama. Moje potrebe danas nisu da napravim nešto što će svaki hakeran koji bar malo zna PHP razumeti "iz prve". Bitno mi je da radim brže i da to bude jednostavno za održavanje (što jeste!). 3. 90% funckija u tvom kodu vracaju varijablu koja se zatim echo-uje. Sasvim normalno. Navedeni primer je template koji služi za prezentovanje informacija. Tu je sasvim normalno da se podaci "u 90% slučajeva echuju" ![]() PHP kôd:
![]() Da opet ponovim, jer ovo je bitno da biste razumeli šta i kako radim, funkcija gore i template na prethodnoj stranici je sve što programer treba da uradi da bi prikazao cart. Nema prenošenje mase promenljivih, rogobatnih funkcija i koječega sličnog. Najteži deo je generisan za njega od strane persistance layera i uvezan od strane frameworka. Fizikalisanje je zastarelo... 4. <?= $ordered_product->getProductId() ?> ... razmisljam da li on u toj funkciji čita iz baze, sa diska, ko zna šta radi. Da li tebe kao dizajnera to zanima? Ne. Imaš API dokumentaciju i radiš po njoj... Ako voliš da gledaš u bazu onda koristiš sledeći metod: polje - id, funkcija - getId() polje - name, funkcija - getName() polje - first_name, funkcija - getFirstName() ... Pattern je оčigledan ![]() 5. I onda tako imaš po jednu funkciju za svako polje u bazi Tačnije, dve... Getter i setter (tkz. akcesori). Zbog enkapsulacije koja ti ne dozvolja da vidiš konkretno polje van trenutne klase ili klase naslednice Propel ti generiše getPolje() i setPolje($value) funkcije. Naravno, te funkcije si dobio džabe, nisi ih ručno pisao. 6. CartService::instance()->getOrder()->getOrderedProducts() umesto $CartService->order->products; Singleton je jedan od osnovnih patterna i omogućava ti da izbegneš prenošenje gomile promenljivih na sve strane. Izuzetno korisno i štedi vreme (zna ko je probao). CartService je Singleton klasa. 7. Navedeni template... Navedeni template je loš. To sam uvideo odmah... Eksperiment koji je pokazao da je nepraktičan. Sad koristim drugačiji pristup gde se templatei i layouti automatski mapiraju sa parom kontroler - akcija (takav pristup koristi Rails) osim ako nije navedeno drugačije. PS: Da bi stvarno video koliko ovaj "komplikovani" pristup olakšava život i smanjuje količinu fizikalisanja treba da ga probaš. Sva ova objašnjenja što sam naveo će ti se najverovatnije učiniti neubedljiva, ali slobodno tvrdim, iz iskustva: nikad u životu nisam brže i lakše radio. Dodatak: Citat:
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog |
|
![]() |
![]() |
![]() |
#6 | ||||
Python Ambassador
Master
|
![]() Ilija, tvoj osnovni problem, je, koliko mi se čini, to što ne želiš/možeš da prihvatiš da poneki put ti nisi u pravu. Prilično mi otežavaju diskusiju osobe koje odjedanput počnu da ubacuju emocije i čisto subjektivna mišljenja bez iole dokaza.
Citat:
Moraćeš da me podsetiš za dotični slučaj (pošto ga se očigledno bolje sećaš od mene) jer, za razliku od tebe, ne znam da izvlačim argumente "iz uveta". Citat:
Citat:
No, pošto izgleda imaš problema da shvatiš celokupnu ideju iza šablona (ili template-a, kako ih Englezi zovu) preporučio bih ti 2 wikipedia unosa za početak: 1. Template 2. Template engine Citat:
__________________
Python Ambassador of Serbia |
||||
![]() |
![]() |
![]() |
#7 | |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
![]() ![]() |
![]() [edit by dinke]Izbacene licne poruke upucene Petru[/edit]
2. Svi dobro znamo kako je PHP nastao i da svoje osnovne koncepte vuče i dan danas. Ne moraš citirati PHP5 manual, bar ne meni. PHP = PHP Hypertext Preprocessor. Šta ti to govori? 3. Da opet ne linkujem na verbalno terorisanje: jedan od osnovnih načina da skreneš razgovor sa određene teme ili izbegneš suštinu je da se uhvatiš za sitnice, što ti radiš u svojoj poruci nakon trećeg citata. Nemoj to da radiš, bar ne kad sam ja u pitanju... 4. Brojke su odokativne i služe da oslikaju ideju / stav. Ne treba ti naučna studija da bi znao da ti sutra treba hleb ili da bi znao da je dizel 66 din. Opet se hvataš za jefine verbalne trikove kako bi skrenuo sa teme / izbegao poentu ![]() Citat:
No, ova tema se ne bavi mojom malenkošću već nekim drugim stvarima. Što se priče kojom se na ovoj temi bavimo uveren sam da sam u pravu i tako se ponašam (iznosim svoja mišljenja i stavove, branim se kad su isti napadnuti, odobravam kad mislim da je neko u pravu itd... klasičan forumski život).
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog |
|
![]() |
![]() |
![]() |
#8 | ||
Python Ambassador
Master
|
![]() Citat:
Citat:
__________________
Python Ambassador of Serbia |
||
![]() |
![]() |
![]() |
#9 | ||
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
![]() ![]() |
![]() Citat:
BTW: Od kad je rukovanje greškama presudno pri izboru ORMa? Ne, ne sviđa mi se BMW jer su mu papučice metalne. Citat:
1. PHP5 only 2. Ne scaleuje dobro - tj. nije pogodan za male skripte 3. Propel bi mogao da bude bolje uvezan, a proces generisanja klasa automatizovan. Sad moraš ručno da pozoveš Phing da generiše klase i da ih kopiraš (nešto što se radi jako retko). 4. Definitivno nije speed king Najverovatnije ima još, ali to su stvari koje mi padaju na pamet. Napravio sam nešto što radio posao i omogućava mi da radim brzo zadržavajući clean dizajn aplikacije i sam kod. Šta je tu loše?
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog |
||
![]() |
![]() |
![]() |
#10 | |
Goran Pilipović
Sir Write-a-Lot
|
![]() Pročitah... i poučen prethodnim iskustvom u diskusijama sa Ilijom nemam ništa pametno da dodam... ili nemam ništa da dodam što bi se izrodilo u nešto pametno.
Jedino što moram da primetim, Ilija, je da nas olako "gađaš" subjetkivnim zaključcima, zatim kažeš nešto kao "najbolji persistance layer za PHP" a onda u dodatnom objašnjenju napišeš Citat:
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
|
![]() |
![]() |
![]() |
Alati teme | |
Način prikaza | |
|
|
![]() |
||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
JavaScript Templates, u Smarty fazonu... | Ilija Studen | (X)HTML, JavaScript, DHTML, XML, CSS | 5 | 11. 03. 2007. 12:56 |