![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czemu ale nie działa mi coś ala getInstance
![]() Moja klasa: I póxnije mam inna klasę:
Lecz to zwraca mi obiekty klasy IndexMod Jak to ma być? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Controller przez dwa L
![]() Oto magiczny Singleton, który rozwiązuje twoje problemy ![]()
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Ja jeszcze tylko dodam, ze gdybys nie kopiowal bezmyslnie mojego nieudanego prsudokodu to by nie bylo problemu
![]() -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam, Dlaczego protected? Warto w ogole jest dziedziczyc z klasy Singletone? Na dobra sprawe to tylko jedna metoda:
A co jezeli trzeba bedzie podac parametry dla konstruktora? Dziedziczenie okaze sie zupelnie zbedne. Adrian. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
@thornag: Skopjowałem tlyko tne kawałek kodu, poniewaz nie wiedziałem jak zrobić zwracanie $this, bo nigdy nie robiłem.
![]() Co do tematu. Z singeltonem sobie poradziłem, i działa ładnie. Jeszcze doczytałem że nie można przekazywac parametrów do getInstance dlatego dałem np. w mysql $db->connect ;P Trzeba by napisac coś o singeltionie w artykułach bo mało osób to rozumie ![]() -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Artykulu nie che mi sie pisac
![]() Krotko i tresciwie o Singletone Singletone to wzorzec projektowy (wzorzec to gotowe rozwiazanie na czeste problemy). Singletone tworzy sie, aby: 1. W calej aplikacji miec dostep do danego obiektu 2. Wykluczyc mozliwosc utworzenia wiecej niz jednego obiektu danej klasy. Przyklady: Ad 1. Np. obiekt bazy danych MySQL - nie bedziemy przeciez 10 razy robic $baza = new BazaMySQL('host', 'login', 'haslo', 'baza_danych'); Ad 2. Ciezko mi podac jakis przyklad dla poczatkujacych, ale ta sama baza danych jest dobrym przykladem. Wtedy wykluczymy, ze gdzies dwa razy laczymy sie z ta sama baza danych (przy duzych projektach jest to mozliwe, jezeli nad kodem pracuje kilku programistow). Zalozenia Singletone: 1. konstruktor klasy musi byc prywatny 2. musi istniec statyczna metoda (funkcja klasy), ktora zwroci nam obiekt danej klasy. KOD
Zarys klasy mamy juz gotowy. Zmienna prywatna $instance bedzie zawierala obiekt klasy. przez getInstance() bedzie mozliwe otrzymanie tego obiektu. A wiec uzupelniamy kod:
Self jest slowem php i oznacza obecna klase. To tak jak $this, tylko ze, self zawiera nazwe klasy, a ponadto self uzywa sie do odwolania do statycznych zmiennych. instanceof jest operatorem. Zwraca true albo false jezeli dany obiekt jest instancja jakiejs klasy. Podsumowujac, sprawdzamy, czy nasza zmienna $instance jest obiektem naszej klasy. Z faktu, ze tworzone zmienne sa wartosci null, warunek ten zwraca false przy pierwszym wywolaniu funkji getInstance. Pozniej obiekt jest juz utworzony. No to mamy gotowego singletone! Teraz pokaze, jak uzywac singletone, kiedy konstruktor wymaga parametrow.
Jak widac, zadanie utworzenia obiektu przejela metoda init. Prosze zwrocic uwage, ze w init() tworzymy obiekt tak: self::$instance = new MojaKlasaSingletone($imie); Jezeli konstruktor nie wymaga parametrow, mozemy napisac new self;. W innym przypadku nazwa klasy jesy potrzebna. Jak uzywac Singletone? Przyklad zwykly i z parametrami:
Mam nadzieje, ze pomoglem. UWAGA: nie sprawdzalem kodu. Oprocz literowek, kod powinien dzialac. Adrian. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Konstruktor musi byc prywatny zeby wylkuczyc $zmienna = New Obiekt(), czy tak ?
I nie mozna by bylo zrobic tak ?
-------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
moznaby tak zrobic
![]() a konstruktor prywatny dokladnie po to, jak mowisz. Adrian. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
No to teraz wrzucić to do artykułów i jak ktos się zapyta o to, to dac linka
![]() ![]() -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Oo
![]() ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 00:20 |