DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Templates, Singleton etc. (http://www.devprotalk.com/showthread.php?t=364)

degojs 15. 11. 2005. 20:43

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

dinke 15. 11. 2005. 21:57

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 :)

degojs 15. 11. 2005. 22:19

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:

al nije mi poznato da je to iko tako koristio,
A meni se čini da si ti suviše dugo vremena proveo radeći PHP only :)

Citat:

vec se singleton u Web aplikacijama racuna po klijentu - browseru koji inicijalizuje sesiju.
Ama, dinke, šta će ti tu singleton (bar za ovaj slučaj ShoppingCart-a)?

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?

Ilija Studen 17. 11. 2005. 01:02

Citat:

Originalno napisao degojs
Šta će ti (tj. Iliji) singleton?

Nećeš (tj. ne smeš da dozvoliš) da korisnik ima dva carta. Jednostavno je takav zahtev i korišćenjem Singletona isključuješ čak i teorijsku mogućnost da do tog dođe. Problem?

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 ;)

degojs 17. 11. 2005. 02:44

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.)

ivanhoe 17. 11. 2005. 12:27

Citat:

Originalno napisao dinke
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.

ovo je skroz php-isticki pogled na svet :D

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

Ilija Studen 17. 11. 2005. 15:09

Citat:

Originalno napisao degojs
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).

Moguće. Pre oko godinu, dve sam imao problem, Singleton klasa se pokazala kao dobro rešenje tako da sam počeo aktivno da je koristim. Od tad sam je verovatno koristio i za stvari za koje sam pattern originalno nije namenjen i to mi ne predstavlja problem (ne znam zašto bi tebi?). Jedna od stvari sa kojom definitivno mogu da živim ;)

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:

Originalno napisao degojs
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?

Ispravnije je.

degojs 17. 11. 2005. 15:48

Citat:

Ilija:
Od tad sam je verovatno koristio i za stvari za koje sam pattern originalno nije namenjen i to mi ne predstavlja problem (ne znam zašto bi tebi?). Jedna od stvari sa kojom definitivno mogu da živim
Ako ćeš na primedbu da nešto radiš pogrešno (i savetuješ to isto drugim) da odgovaraš sa "Šta tebe briga kako ja radim?" onda je svaka rasprava besmislena od samog početka.

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).

Ilija Studen 17. 11. 2005. 16:02

Citat:

Originalno napisao degojs
Ako ćeš na primedbu da nešto radiš pogrešno (i savetuješ to isto drugim) da odgovaraš sa "Šta tebe briga kako ja radim?"

Ne radim to (nit se branim na taj način, nit savetujem drugima da koriste loše rešenje). Koliko vidim, naveo sam potpuno ispravnu primenu Singleton patterna kad se svedemo na PHP (na PHP forumu smo, zar ne?). Razumem te, nisi znao kako stvari funkcionišu u PHP pa si hteo da se stvar "pretrese", ali definitivno ne vidim razlog ovako "dramatičnog" završavanja diskusije.

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š.

degojs 17. 11. 2005. 16:58

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:

Koliko vidim, naveo sam potpuno ispravnu primenu Singleton patterna kad se svedemo na PHP (na PHP forumu smo, zar ne?).
Jok, obrnuto, tek tu nema valjanog razloga za singletonom. Ja više nemam volje da ti objašnjavam, a i znam da ne bi poslušao desktop programera :)

I sad stvarno kraj od mene.


Vreme je GMT +2. Trenutno vreme je 06:24.

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.