DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 15. 11. 2005.   #21
degojs
I'm a PC too.
Wrote a book
 
Avatar degojs
 
Datum učlanjenja: 05.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
degojs će postati "faca" uskorodegojs će postati "faca" uskoro
Default

Citat:
Ilija
Osnovna svrha Singletona je da osigura da imaš jednu instancu klase.
Pa šta se dešava kad na sajt dođu dva posetioca a singleton sprečava da imamo dve instance shopping cart-a?
__________________
Commercial-Free !!!

Poslednja izmena od degojs : 15. 11. 2005. u 13:56.
degojs je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #22
degojs
I'm a PC too.
Wrote a book
 
Avatar degojs
 
Datum učlanjenja: 05.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
degojs će postati "faca" uskorodegojs će postati "faca" uskoro
Default

Citat:
Ne zna koje jezike koristiš, ali u PHPu je generalan problem imati "opštepristune" promenljive.
Kakve veze ima singleton sa rešenjem ovog problema?

Za rešenje ovog problema dovoljno je imati klasu sa statičkim poljima, singlton je nebitan u toj priči.
__________________
Commercial-Free !!!

Poslednja izmena od degojs : 15. 11. 2005. u 13:58.
degojs je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #23
noviKorisnik
Dejan Katašić
Wrote a book
 
Avatar noviKorisnik
 
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
noviKorisnik će postati "faca" uskoro
Default

Citat:
Originalno napisao godza
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.
Nije Ilija to napisao već bluesman, Ilija samo nije preciznije objasnio zašto pominje dolare (pa sam ja uskočio kao drveni advokat, a sad ako sam zabrljao... upucaću poruku, no problemo).
noviKorisnik je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #24
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

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

Poslednja izmena od dinke : 17. 11. 2005. u 17:39.
bluesman je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #25
degojs_
novi član
 
Datum učlanjenja: 15.11.2005
Poruke: 1
Hvala: 0
0 "Hvala" u 0 poruka
degojs_ is on a distinguished road
Default

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
{
   public static $my_static = 'foo';
}

...
print Foo::$my_static . "\n";

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

Poslednja izmena od degojs_ : 15. 11. 2005. u 16:09.
degojs_ je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #26
noviKorisnik
Dejan Katašić
Wrote a book
 
Avatar noviKorisnik
 
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
noviKorisnik će postati "faca" uskoro
Default

Citat:
Originalno napisao degojs_
Dalje, ShoppingCart koji je singleton - šta se dešava kad imaš 10 posetioca na sajtu, a singleton svima daje referencu na jedan objekt?
Pomislio sam da se šališ kad si ovo prvi put pomenuo. Ta jedinstvenost se gleda na nivou izvršenja skripte, dakle jedan zahtev, jedan korisnik, jedna stranica, itd. Inače, i meni deluje preterano navođenje "jedna instanca" jer zašto onda uopšte instanca ako je jedinstvena. Insistiranje na pozivu metoda umesto direktnog pristupa propertima... jeste preporuka za neke objektne manire, ali nije baš i da mora tako.
noviKorisnik je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #27
degojs
I'm a PC too.
Wrote a book
 
Avatar degojs
 
Datum učlanjenja: 05.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
degojs će postati "faca" uskorodegojs će postati "faca" uskoro
Default

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.
__________________
Commercial-Free !!!

Poslednja izmena od degojs : 15. 11. 2005. u 20:18.
degojs je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #28
dinke
Super Moderator
Invented the damn thing
 
Avatar dinke
 
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
dinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamen
Default

Evo primera Singletona u php5:

PHP kôd:
<?php
class Example
{
   
// Hold an instance of the class
   
private static $instance;
  
   
// A private constructor; prevents direct creation of object
   
private function __construct()
   {
       echo 
'I am constructed';
   }

   
// The singleton method
   
public static function singleton()
   {
       if (!isset(
self::$instance)) {
           
$c __CLASS__;
           
self::$instance = new $c;
       }

       return 
self::$instance;
   }
  
   
// Example method
   
public function bark()
   {
       echo 
'Woof!';
   }

   
// Prevent users to clone the instance
   
public function __clone()
   {
       
trigger_error('Clone is not allowed.'E_USER_ERROR);
   }

}

?>
Source: http://www.php.net/manual/en/language.oop5.patterns.php
__________________
Caught in a Web|Blogodak
With great power comes great responsibility!
dinke je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #29
degojs
I'm a PC too.
Wrote a book
 
Avatar degojs
 
Datum učlanjenja: 05.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
degojs će postati "faca" uskorodegojs će postati "faca" uskoro
Default

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.
__________________
Commercial-Free !!!

Poslednja izmena od degojs : 15. 11. 2005. u 21:06.
degojs je offline   Odgovorite uz citat
Staro 15. 11. 2005.   #30
noviKorisnik
Dejan Katašić
Wrote a book
 
Avatar noviKorisnik
 
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
noviKorisnik će postati "faca" uskoro
Default

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.
noviKorisnik je offline   Odgovorite uz citat
Odgovori



Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
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


Vreme je GMT +2. Trenutno vreme je 20:14.


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.