![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
*Plik Bootstrap* Każdemu obiektowi który ma mieć zakres globalny przekazujemy w konstruktorze context
Każdy obiekt globalny dziedziczy po klasie System_Object
Obiekt Kontext
Przykłądowa klasa. Wszystkie inne na podobnej zasadzie. Nie ma żadnych setterów, getterów, wszystko bez zbędnych kodów.
sposób użycia
Moim zdaniem to musi być ostateczne rozwiązanie problemu globalsów. Bardzo proszę o dyskusję Czy singletony zamiast tego byłyby wydajniejsze ? Podobno singletony to zło. Ja już zgupłem do reszty @_@ Ten post edytował Black-Berry 5.11.2008, 09:24:28 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 28.09.2007 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Witam
Znalazłem inne rozwiązanie problemu globali. Moje podejście jest minimalistyczne. Minimum pisania, maximum czytelności, pełna funkcjonalność. Używam statycznych singletonów, najprościej przedstawię to na hiper-uproszczonym przykładzie. Dodaję sobie do aplikacji klasę app, która jak sama nazwa wskazuje, trzyma dane aplikacji... Kod class app { public static $qa; ... } Zmienna app::$qa przechowuje mi np informację, czy aplikacja jest odpalona w trybie testowym. W dowolnym miejscu kodu sprawdzam sobie... Kod if (app::$qa) ... ...i pozamiatane. Stanu aplikacji nie muszę "przekazywać" do modułów. Mogą sobie go sprawdzać od ręki, w każdej chwili, mogą go też zmieniać. W zasadzie moja klasa app jest też pewnym rodzajem rejestru, ale prostszym. Dodatkowo posiada pewną kolosalną przewagę: jeśli używasz Eclipse, ZendStudio, albo podobnego cuda z opcją CodeAssist lub AutoComplete - wszystkie klucze tego rejestru będą się "wklepywać" automatycznie po wpisaniu 1, góra 3 pierwszych liter. Oczywiście klasa app w rzeczywistości robi dużo więcej poza samym trzymaniem stanu. Najpierw inicjuje się, inicjuje całą aplikacje, wgrywa pliki, otwiera bazę, no wszystko co tam jest potrzebne na dzień dobry i nie podpada pod specjalistyczne moduły. Ciekawi mnie, jakie moje rozwiązanie ma wady i dlaczego kurcze nikt takiego myku nie używa? Ten post edytował pp-layouts 3.11.2008, 22:55:43 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 15:49 |