Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Singleton w praktyce
lukasz91
post
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 7
Dołączył: 6.01.2010
Skąd: Opole Lubelskie

Ostrzeżenie: (0%)
-----


Witam,
właśnie uczę się o wzorcu singleton. W teorii już wiem o co tam chodzi. Byłbym wdzięczny jakby ktoś lakonicznie przedstawił jak używać tego w praktyce (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adbacz
post
Post #2





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Mam główny kontroler, w którym na samym początku powinno być ustalane publiczne pole $this->load (może nie tyle co powinno, ale mam takie założenie), do którego przypisywana jest klasa ładowania innych. Na samym początku, gdy mam wyłowywany kod, gdzie wszystkie składowe FW są zbierane do kupy, dołączane pliki, ustawienia itd, w pewnym momencie ładuje plik Głownego kontrolera po czym kontroler wywołany patrząc na URL. Ogólnie rzecz biorąc, wszystkie mniejsze kontrolery dziedziczą po tym głównym, w którym właśnie jest funkcja get_instance() oraz gdzie w konstruktorze jest przypisywane to pole. I wszystko było dobrze. Tworzyłem nowy obiekt głównego kontrolera, tego który dziedziczy gówny kontroler a w nim miałem już wszystko co potrzebne do aplikacji (bo wszystko co potrzebne miałem już robione w konstruktorze). Ale gdy zrobiłem prywatny konstruktor w głównym kontrolerze, mimo, że odwołuję się do instancji Main_Controller::get_instance();, nic się nie dzieje, tak, jakby ta funkcja była pusta, nie mogę tworzyć pól tej klasy, a metody są niewidoczne. A to, że konstruktor jest prywatny, nie mogę odwołać się do klasy przez new. Później jak już tworzę obiekt właściwego kontrolera to wyskakują mi same błędy, że nie można użyć $this, albo że nie ma pola $this->load itd.

Może nie jestem świetny w tych sprawach, ale wystarczy mi odrobina tekstu dobrze napisanego a sam do tego dojdę, dlatego tak jest a nie inaczej.

PS. Jeśli nie powinno sie uzywać publicznego konstruktora w głównym kontrolerze, to tak mnie zastanawia fakt wykorzystania tego w CodeIgniterze. Skoro Wy twierdzicie, że nie powinno się tak robić to dlaczego projektanci poszli na to? Może dla tego, że tak jest prościej? Bo faktycznie, z publicznym kontruktorem wystarczy wywołać new Main_Controller() i już mamy wszystko załatwione, a z prywatnym mam bardzo problem i nawet nie wiem jak się za niego zabrać (IMG:style_emoticons/default/mad.gif)

Ten post edytował adbacz 16.10.2011, 22:51:04
Go to the top of the page
+Quote Post

Posty w temacie
- lukasz91   Singleton w praktyce   25.07.2011, 17:44:44
- - wookieb   Nie używać tego w praktyce. http://forum.php.pl/in...   25.07.2011, 17:49:50
|- - starach   Cytat(wookieb @ 25.07.2011, 18:49:50 ...   26.07.2011, 01:56:35
- - lukasz91   hmm w takim może polecicie jakieś materiały o budo...   25.07.2011, 19:31:02
- - michaJlS   Całkiem fajne opisy: http://www.oodesign.com/   25.07.2011, 19:45:19
- - Rid   Context ,nie zawsze jest dobry szczególnie w połąc...   26.07.2011, 02:12:34
- - wookieb   Bo nie serializuje się obiektów z kontekstem. Poza...   26.07.2011, 07:20:46
- - Rid   To trzeba powiedzieć Panom z Microsoftu bo utworzy...   26.07.2011, 13:10:45
- - wookieb   Wartości typu resource (połączenia, curl, uchwyty ...   26.07.2011, 13:55:57
- - Rid   Alternatywa dla context Thread Local Storage,co o ...   29.08.2011, 14:23:36
- - dariuszp   Dlaczego ktoś tu mówi że nie należy stosować wzorc...   30.08.2011, 09:52:38
- - wookieb   Pisałeś kiedyś testy jednostkowe? Zajmowałeś się p...   30.08.2011, 10:04:29
- - Sagnitor   Zadam pytanie ciut odbiegające od głównego tematu....   31.08.2011, 12:06:12
|- - by_ikar   Cytat(Sagnitor @ 31.08.2011, 13:06:12...   31.08.2011, 13:38:10
- - Rid   Ja się chyba bardziej zainteresuję wzorcem TLS ....   31.08.2011, 14:06:29
|- - Sagnitor   Cytat(Rid @ 31.08.2011, 15:06:29 ) Ja...   31.08.2011, 14:14:40
- - Rid   Ja pracuję w C# wzorzec jest dopracowany,w rubym,J...   31.08.2011, 14:18:27
- - adbacz   Kurcze, tak czytam o tym singletonie ale nijak nie...   16.10.2011, 00:52:14
- - wookieb   W php 5 te wszystkie & jako wskaźniki referenc...   16.10.2011, 08:24:46
- - adbacz   Mógłbyś mi wytłumaczyć dlaczego powinno się uniemo...   16.10.2011, 17:36:10
- - Daiquiri   Cytat(adbacz @ 16.10.2011, 18:36:10 )...   16.10.2011, 18:04:59
- - adbacz   Dobrze, a co gdy klasa dziedziczy po głównym kontr...   16.10.2011, 21:39:03
|- - mike   Cytat(adbacz @ 16.10.2011, 22:39:03 )...   16.10.2011, 21:53:14
- - adbacz   Mam główny kontroler, w którym na samym początku p...   16.10.2011, 22:29:14
- - Noidea   Tzn. masz kod, który tworzy obiekt Main_Controller...   16.10.2011, 22:54:00
- - adbacz   Chyba źle wytłumaczyłem. najpierw jest uruchamiany...   16.10.2011, 23:37:26
- - Daiquiri   Nie mam pewności - ale czy Ty aby przypadkiem nie ...   17.10.2011, 08:32:49
- - Noidea   Już chyba wiem co chcesz zrobić z tym singletonem....   17.10.2011, 12:52:16
- - adbacz   Wiecie co, naczytałem się o Wzorcach Projektowych,...   19.10.2011, 00:26:01
- - Orzeszekk   a powiedzcie mi czy takie cos to tez jest wzorzec ...   7.11.2011, 23:56:51


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 20:27