![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 0 Dołączył: 4.09.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam
Posiadam abstrakcyjną klasę Wykres i dzieci tej klasy np. Wykres słupkowy, Wykres belkowy, Wykres liniowy itd. Teraz do utworzenia każdego z tych wykresów potrzebuję określonego zbioru opcji, z których tylko nieliczne być może będą wspólne dla wszystkich wykresów. Mój problem dotyczy wyboru jednego z rozwiązań sposobu dostarczenia tych opcji, które przyszły mi do głowy: 1. W każdej klasie zdefiniuję domyślną tablicę z ustawieniami, która będzie miała postać:
Edit: 2. Upakowanie wszystkich ustawień do osobnych zmiennych/tablic. 3. Napiszę abstrakcyjną klasę WykresUstawienia, która będzie zawierała wszystkie wspólne ustawienia oraz funkcje umożliwiające nimi zarządzanie oraz szereg klas, które będą dziedziczyły z tej klasy. Każdy wykres będzie miał osobną klasę ustawień. Wydaje mi się, że pierwsze rozwiązanie jest lepsze i pisanie osobnych klas ustawień dla każdego rodzaju wykresu jest stratą czasu. Tak czy owak widziałem już parę różnych projektów na tym forum i pisanie osobnych klas ustawień wydaje się mieć jakiś sens (IMG:style_emoticons/default/smile.gif) Proszę o pomoc w rozwiązaniu mojego małego problemu. Dzięki za pomoc. Ten post edytował zurek 9.08.2012, 00:44:48 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A nie pomyślałeś o klasie z dynamiczną liczbą własności w przykładowym stylu:
Oczywiście można też inaczej, ale to pozwala robić wiele obiektów tej samej klasy z różnymi własnościami i dynamicznie modyfikowalnymi. Do tego można zmienić konstruktor pod wymagania i całą klasę rozszerzać też jak chcesz. Możesz dorzucić jeszcze funkcję clone by tworzyć mnóstwo obiektów tych samych czy do debugu __toString machnij (IMG:style_emoticons/default/smile.gif) Tylko że w takim podejściu możesz jedynie klucze 1 rzędu wyciągać oraz ustawiać. Jeśli są one tablicą to musiałbyś zmodyfikować funkcje dostępu by obsłużyły one i to. Przykładowo w formie $obiekt.get('klucz1rzedu.klucz2rzedu.klucz3rzedu'); co byłoby równoznaczne z dostępem do elementu: $obiekt._config['klucz1rzedu']['klucz2rzedu']['klucz3rzedu']; Tylko trzeba pamiętać, że . może też oznaczać dostęp do własności obiektu, jeśli wartość klucza jest obiektem. Rekurencja w tym wypadku byłaby wskazana. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 02:08 |