![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Mam następujący kod:
I teraz inicjuję tą klasę poprzez takie wywołanie:
Prowadzi to po prostu do zwrócenia obiektu klasy utworzonego poprzez normalne new. A teraz przejdźmy do sedna sprawy: Ma ktoś pomysł jak zmusić klasę Database do zwrócenia przy tworzeniu referencji do innej klasy i autodestrukcji instancji samej siebie? Zależy mi na takim przebieku wydarzeń:
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
hmm... zamiast robic w klasie Singleton jak podejrzewam
Kod <?php class Singleton { function getInstance($arg) { $ret = new $arg(); return $ret; } } ?> mozes dac np. Kod <?php class Singleton { function getInstance($arg) { $ret = new $arg(); return $ret->singleton(); } } $db = Singleton::getInstance('dbdriver'); ?> Kod <?php class Database { function singletont() { $Config = Singleton::getInstance( 'Config' ); $this->resConnection = &ADONewConnection( $Config->getValue( 'database/type' ) ); $this->resConnection->PConnect( $Config->getValue( 'database/host' ), $Config->getValue( 'database/user' ), $Config->getValue( 'database/password' ), $Config->getValue( 'database/database' ) ); return $this->resConnection; } } ?> to 1 sposob. drugi taki: Kod <?php class Database extends AdoDb { } ?> czy jak tam sie nazywa klasa adodb nie wiem ;] -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
1) Proszę, nie używaj nazwy singleton, bo nie masz tutaj żadnego singletona, a twoje nazewnictwo służy tylko temu, żeby utrudnić zrozumienie kodu.
2) Konstruktor nie może zwrócić żadnej instancji, bo konstruktor nic nie zwraca. Nie może również wywołać destruktor, bo jeszcze nie ma obiektu który można by niszczyć. Pomyśl trochę jak to w środku działa. 3) To, o co się pytasz, to fabryka. Pełna nazwa to bodajże Factory Method. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Przepraszam, bo rzeczywiście nagiełem trochę zasady i klasa Singleton w rzeczywistości jest bardzo dziwnym tworem i więcej ma wspólnego z rejestrem niż z Singleton'em. Po prostu mój kod nadaje się do generalnej restrukturyzacji.
Dziękuję wszystkim za pomoc w rozwiązaniu problemu, szczególnie hawkowi który uświadomił mnie w mojej niewiedzy :] Temat uważam za zamknięty. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:29 |