<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 :)</edit></dpt>
Citat:
PHP kôd:
Primer iz života (stranica koja prikazuje sadržaš carta): PHP kôd:
|
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. |
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 :p ) znam da ti Smarty nije potreban u 99% slučajeva.
|
Iz mog iskustva ( nesto obilnije od tvog :) ) upotreba PHP na nacin na koji ti to radis je najblaze receno radikalna.
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. :) |
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" :p Kontroler koji pokazuje ovaj template izgleda ovako: 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:
|
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:
|
[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 :p 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). |
Citat:
Citat:
|
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? |
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:
|
To "najbolji persistance layer" nije samo moje mišljenje već gomile drugih programera koji su ih probali. Ima ih par: PEAR::DB_DataObject, MetaStorage, Propel... Propel se pokazao kao najkompletniji i najviše korišćen. Zajednica oko njega je živa i ima par prilično jakih likova u ekipi tako da mu ne fali ni kvalitet ni stabilnost.
1. i 2. mi ne predstavljaju problem jer uglavnom pravim veće PHP5 aplikacije. Baš pre neki dan sam napisao malu news skriptu za prijatelja. Koristio sam PHP4 i sve sam napisao from scratch. Kao što rekoh, alat biraš po potrebi i ne postoji univerzalno rešenje. Što se brzine tiče pitanje je gde povući granicu između brzine kojom praviš aplikacije i brzine kojom se iste izvršavaju. Zavisi od slučaja do slučaja... Pobornik sam agilnog razvoja i primene patterna. Good old PHP4 sa akcentom na proceduralnom programiranju mi ne leži baš najbolje u toj priči. Citat:
|
Ja mislim da si ti pogresno shvatio, ja i Ilija smo prijatelji i ne pokusavam da ga ocrnim vec jednostavno pricamo i komentarisem njegov koncept i metod rada. Ti si, kao i bilo ko drugi, slobodan da prokementarises moj koncept i metod rada, niko ti to ne brani dok god se civilizovano ponasamo i obracamo drugima sa "respect" bez obzira koliko je ko iskusan.
Jedino sto hocu da kazem da je Ilija gotovo neupotrebljiv kada je u pitanju timski rad zbog nacina na koji radi. On verovatno odlicno radi sam, ali kao sto sam vec jednom pokusao, bilo je puno nesporazuma kada smo pokusali nesto zajedno da odradimo. BTW, ne znam da li si procitao ceo thread, ovo sto spominjes "haha, to ti je bez veze" ... je upravo Ilija zapoceo svojim komentarom, pa je zato moj prvi post na ovoj strani poceo ironijom na Ilijin post. Nije bitno, mozda je i u pravu kada kaze da Petar nije dovoljno iskusan, ali postoji normalan nacin da se to kaze. PS Opusti se, vidim da je "green county" ekipa :) odmah skocila da brani Iliju, nemate od cega da ga branite, ako pazljivo procitas - u mojim postovima su samo komentari - nema ni jedan "napad". U to lepo obrazlozeni komentari, zar ne? Da li sam u pravu i ko je u pravu, to je drugo pitanje. |
Da ne propadne tema, da se vratimo malo na tehničku stranu :)
Citat:
Jesi li ti uopšte siguran u to --- koja je osnovna svrha singleton d.p.-a? |
Citat:
Možeš li da daš primer implementacije i pojasniš, pošto me zainteresovalo :) |
Osnovna svrha Singletona je da osigura da imaš jednu instancu klase. Još jedna osobina je da toj instanci možeš pristupiti pozivom jednog statičkog metoda klase. Ne zna koje jezike koristiš, ali u PHPu je generalan problem imati "opštepristune" promenljive. Možeš da koristiš neki od autoglobals nizova ($_GLOBALS), cimati se sa globals sve vreme, prosleđivati kao parametre (stupid) itd, ali to je sve daleko od elegantnog rešenja.
CartService::instance() vraća jednu jedinu instancu servisa kojoj možeš da pristupiš odakle god hoćeš. Primera radi, da bih dodao proizvod u cart dovoljno je da napišeš: Kôd:
CartService::instance()->addProduct( new Product(12) ); CartService je Singleton klasa koja se brine o korpi i pruža niz metoda za baratanje proizvodima (add, remove, setQuantity, clear itd). Ništa posebno, samo je u shop delu skripte izuzetno bitna... Umesto da se uvek ručno uvezuješ podatke imaš CartService koji to radi. PS: Za često korišćene operacije definišen shortcut funkciju tipa add_to_cart(Product $product, $quantity = 1); da se ne smaram. |
Dakle, Singleton je pravi, ortodoksni, prvoklasni buzzword :)
Ti sad pomislis ko zna sta radi taj singleton kad neko kaze da jedva može bez toga a on ti osigurava da imas jednu instancu klase :) Znaci ti imas jednu "obicnu" Shopping Cart klasu koju si samo "uhapsio" preko singleton da ne bi greskom imao vise od jedne instance? Ako grešim sorry. a šta fali: $CartService->addProduct( 12 ); umesto: $CartService::instance()->addProduct( new Product(12) ); Koje su tačno prednosti ovog drugog metoda? BTW, u PHP-u nije problem imatu "ošteprisutnu" promeljivu, niti je problem obezbediti da imaš samo jednu instancu, bitno je samo lepo isplanirati. Nije $_GLOBALS, nego $GLOBALS, verovatno omaška |
Citat:
Ilija bi bio buzzword za osobu koja živi u Novom Sadu, non stop zvoca o PHPu i voli Smoki? Citat:
Citat:
Citat:
|
Đe dolari? :) Nisam te razumeo za to.
|
jel mogu ja ? :-)
Dakle, nije kako si napisao $CartService::instance()->addProduct( new Product(12) ); već CartService::instance()->addProduct( new Product(12) ); Nema dolara... statički metod - možeš ovaj kod da koristiš u bilo kojoj funkciji. S druge strane da bi... $CartService->addProduct( 12 ); ... radilo u nekoj funkciji, mora prethodno... global $CartService |
sorry korisniche, nemoj misliti da se pravim drvenim advokatom, ali verujem da je ilija omashkom napisao $ isred poziva staticke metode, jel to ovako ne bi radilo.
|
Citat:
|
Citat:
Za rešenje ovog problema dovoljno je imati klasu sa statičkim poljima, singlton je nebitan u toj priči. |
Citat:
|
Izvninjavam se, ja sam ubacio $ ispred, moja greska. Ali to je nebitno za pricu, zar ne? Moze dalje? Da li moze objasnjenje zasto je toliko vazan singleton ovde.
|
Ma najmanji je problem u definiciji, a veći u korišćenju.
Zašto bi koristio singleton klasu za nekakve globalne promenljive? Ja nisam nikad koristio PHP, ali evo gledam primer na PHP sajtu, tačno ono što sam napisao pre - statička polja u klasi i kraj priče. Zašto bi sad ovo čovek komplikovao dalje singltonom? Šta propuštam? Kôd:
class Foo Dalje, ShoppingCart koji je singleton - šta se dešava kad imaš 10 posetioca na sajtu, a singleton svima daje referencu na jedan objekt? Zato sam i tražio da Ilija pokaže neki primer.. pa da vidimo. Šta propuštam i ovde? O.T. @bluesman ili ko već ima mogućnosti: da prijavim da neće da mi pošalje password na mail (javi samo Bad Request sa servera)? Evo me na poslu, zaboravio sam koji je pass, pa sam morao da kreiram novi, ovaj, nalog :-) |
Citat:
|
Pazi,
nemaš ti šta da kažeš "ta jedinstvenost se gleda na nivou.." To je pogrešno. To je restrikcija koju ti sad uvodiš, a singleton to nigde ne navodi. Ili imaš max samo jedan objekt date klase ili možeš da instanciraš više objekata. Prosto. Bar ja tako vidim singleton, a daću ti i primer pravog singletona :) Primer singletona bi bio objekt koji radi sa log fajlom, a svi posetioci na sajtu imaju referencu na jedan te isti objekt. Vidiš, nema nikakvog posmatranja "na nivou.." - svi posetioci imaju referencu na jedan te isti objekt, koga i treba da bude samo jedan. Drugi primer.. evo sad mi pade na pamet - samo jedan COM1 port, pa onda samo jedan printer spooler objekt, itd itd. Kako god okreneš, ne štima nešto. Ako je svaka instanca ShoppingCart-a zasebna za sesiju, onda to ili nije singleton ili ti singleton d.p. uopšte ne treba, a ako imaš pravi singleton, onda ćeš doći u situaciju da ShoppingCart bude deljen između posetioca, zar ne? Voleo bih da Ilija lepo stavi primer koda koji on koristi (ShoppingCart a la singleton), što sam i tražio, pa da pogledamo. |
Evo primera Singletona u php5:
PHP kôd:
|
E dobro, pitanje je sad: da li je instanca objekta deljena među posetiocima (različitim sesijama), pošto se referenca na nju čuva u statičkom polju?
Ako jeste, ne možemo da koristimo takav ShoppingCart jer će da nastane zbrka - svi će da koriste isti objekt, a ako nije --- šta će nam uopšte singleton (te se slažem sa, čini mi se imenjakom, noviKorisnik)? Ajd, vi tamo svi imate php pa možete lako da proverite da li su statička polja klasa deljena među sesijama. |
Pa nisu. Život PHP objekta najduže traje koliko izvršenje skripte. Najčešće kao rezultat toga bude stranica prema klijentu. Privid perzistencije objekta je čuvanje objekta u sesiji i restauracija pri sledećem pozivu skripte. Sesija naravno ide po korisniku, nije deljena.
Ako neka vrednost treba da bude globalna na nivou sajta, za sve posetioce, čuvaće se u bazi ili u fajl sistemu. |
Pa koji će mu đavo singleton onda uopšte?
Evo sad sam i ja skinuo i instalirao PHP i proverio: jeste, statička polja klasa su zasebna za svaku sesiju, što je.. malo čudno, I guess PHP is just different :) Opet, onda mogu samo da ponovim ono pitanje gore.. |
Pa, pazi, verovatno je kod MS-a to drugacije reseno, ili si previse dugo radio na razvoju desktop based aplikacija :)
HTTP je "stateless" protokol. Kao sto rece noviKorisnik, svaki script traje samo tokom ucitavanja strane. Ako se podaci ne snime koriscenjam sesija recimo (file, db, shared memory) sadrzaj strane se nepovratno gubi. Teoretski moguce je signleton klasu serializovati u fajl tako da bude jedinstvena za apsolutno sve usere na jednom (ili cak vise servera), al nije mi poznato da je to iko tako koristio, vec se singleton u Web aplikacijama racuna po klijentu - browseru koji inicijalizuje sesiju. Uzgred, ovo je vec otislo u totalni offtopic :) |
Nema veze što je otišlo u off-topic, meni je zanimljivo :)
Nije samo MS, nego i Java (Server Pages) recimo. Ali nije bitno uopšte.. Http jeste stateless, ali server može da čuva podatke o sesijama. Znači, nije baš tako stateless kao što izgleda - mada, ne znam zašto mi to napominješ? Citat:
Citat:
Npr. napraviš ShoppingCart objekt i gurneš ga u sesiju kako bi imao pristup i na drugim stranicama i gotova priča. Šta će ti singleton uopšte? Taj jedan te isti ShoppingCart objekt dakle uvek imaš u sesiji. Šta će ti (tj. Iliji) singleton? |
Citat:
Ti si uglavnom desktop programer. Koliko sam samo puta poželeo "trajnost" koju ti takvo okruženje pruža. Međutim, u PHPu su stvari malko drugačije pa se prilagođavaš pravilima igre. U to što sever (hipotetički) može, a šta ne ne želim da zalazim. Ako ćemo tom logikom možemo jadikovati što nam Apache ne kuva kafu ;) |
Mislim da komplikuješ bez potrebe, a ako ti je to zahtev klijenta.. onda dobro, šta da se radi (mada iskreno, ne verujem u tu tvoju priču iz prostog razloga što si singleton prvo opisao kao nešto što se koristi za jednostavan pristup nekakvim globalnim promenljivim, itd).
Tvoja ocena da sam ja desktop programer: pošto druge popularne web tehnologije (Java, "stari" ASP 3, ASP.NET) podržavaju ono gore (vidljivost istog objekta iz različitih sesija) nije li onda nekako ispravnije reći da si ti PHP-only programer? Ma ne da podržavaju takvu stvar nekakvim "zaobilaznim" putevima i hakovima, nego je to deo osnovne funkcionalnosti. Ko je tu sad desktop, ko web developer, a ko ne zna dalje od PHP-a, bolje da se ne etiketiramo. Ja ovo ne bih nikad potencirao na PHP forumu, ali kad me već nazvaste desktop programerom :), da onda samo razjasnimo kako stvari stoje sa drugim web tehnologijama. Pored toga da si ti PHP-only, tačno bi bilo i napisati da ja nisam upoznat sa PHP-om :) (Kad već pominješ Apache.. u kombinaciji sa TomCat-om (kontejner za JSP) bez problema radi to što ti proglašavaš za hipotetičko.) |
Citat:
recimo mod_perl cuva globalne promenjive na nivou servera, tako da dok god ne ugasis to dete apache-a imaces sacuvane vrednosti globalne promenjive... to sto php ne moze da sacuva podatke osim snimanjem negde je posledica arhitekture mod_php-a, mada realno je to prednost za obicne korisnike, jer mod_perl zna da bude jako smoran za debug zbog te perzistencije globalnih varijabli... |
Citat:
Kad smo već kod toga, osnovna svrha automobila je da preveze osobu (grupu, teret) od tačke A do tačke B. Mada, znam dosta mladih "parova" koji uprkos originalnoj nameni automobila isti koriste i za neke malo "dinamičnije" stvari. Probao sam da im objasnim da to ne valja jer time narušavaju sam koncept automobila, ali nije išlo. Neće da slušaju... Citat:
|
Citat:
Ja se ovde isključujem pošto smo, čini mi se, tehničku stranu priče završili (uz mali dodatak za tebe na kraju: singleton d.p. nije auto, a programiranje nije *****. Kad bude bilo, možemo da povlačimo paralele). |
Citat:
Nego, izgleda da je ovde najbitnije ko će isterati svoje. :cool: PS: Što se "globalne prisutnosti" promenljive tiče u PHPu to može da se postigne primenom Singleton paterna iako nije baš "po knjizi" (kao što nije ni korišćenje automobila na gore opisani način). To je jedan alat više u našem arsenalu, ne problem što uporno pokušavaš da istakneš. |
Pa šta da ti drugo napišem, kad ti počinješ biti bezobrazan i pričaš nešto tipa da ja imam problem sa tim kako ti koristiš singleton? Misssim.. svodiš stvari na nešto lično, a jebe se meni ako ćeš ti sve da programiraš u Ruby i da koristiš "proširen" Abstract Factory design pattern da sortiraš brojeve.
Citat:
I sad stvarno kraj od mene. |
Vreme je GMT +2. Trenutno vreme je 14:04. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.