Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Załóżmy, że mamy wielowymiarową tablicę, której struktury do końca nie znamy. Korzysta z niej kilka innych obiektów, mogą one wstawiać do tej tablicy wartości pod odpowiednimi indeksami, ale i też je wyciągać (zakładamy, że nigdy nikt sobie na wzajem danych nie nadpisze). Ale ta tablica ma być "zarządzalna" przez osobny obiekt. To znaczy, by pobrać jakąś wartość trzeba użyć metody $object->get('index'), a żeby wstawić $object->set('index', 2). Nigdy nie ma bezpośredniego dostępu do tej tablicy.
Jak wykonać metody pobierania i wstawiania do tablicy, by były możliwie jak najszybsze (operacje na stringach to jakaś masakra w PHP ;/) i żeby można było dostać się do tablicy wgłąb, na przykład: $table['index1']['index2']['index3']? Wymyśliłem, by na poczekaniu tworzyć funkcję anonimową (create_function), której prześlemy całą tablicę, a w stringu stworzymy już indeks do pobrania:
I teraz, jeśli chcemy pozyskać jakąś wartość to w parametrze metody podajemy ciąg znaków: 'index1.index2.index3'. Ale nie jest to zbyt szybkie. Macie może inne pomysły na rozwiązanie tego problemu? Ten post edytował adbacz 9.07.2014, 23:26:52 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Kilka rozwiązań:
1. Zacznij od wczytania wielowymiarowej, zwykłej tablicy. Pozwól każdemu z modułów odpowiednio ją przetworzyć (niech każdy z modułów we własnym zakresie martwi się o strukturę danych) po czym spłaszcz całą tablicę wielowymiarową do tablicy jednowymiarowej. 2. Utwórz zestaw odpowiednich klas, których obiekty będą służyć za konfigurację. Innymi słowy pozbądź się kompletnie tablic. 3. Skorzystaj ze wspomnianego już wcześniej przeze mnie komponentu PropertyAccess z Syfmony - o ile wydajnościowo jest akceptowalny. Napisz też dokładnie jakie problemy/trudności sprawia wykorzystanie "czystej" tablicy. Tzn. w jakim celu koniecznie chcesz posiadać metody ::get() i ::set() - może cały problem w ogóle nie jest warty zachodu? |
|
|
|
adbacz Jak szybko dostać się do wartości wielowymiarowej tablicy z poziomu metody obiektu 9.07.2014, 23:26:38
SmokAnalog Najprościej, choć niezbyt elegancko, wytłumić błęd... 10.07.2014, 09:42:12
by_ikar Można do tego dojść na kilka sposbów, można używać... 10.07.2014, 09:59:37
SmokAnalog Pytanie tylko po co tak kombinować. Moim zdaniem t... 10.07.2014, 10:05:31
by_ikar Widzisz, operator wytłumienia nie powinno się nigd... 10.07.2014, 10:44:58 
SmokAnalog Cytat(by_ikar @ 10.07.2014, 11:44:58 ... 10.07.2014, 10:55:17
nospor CytatJesteś pewien, że handlery błędów się wywołuj... 10.07.2014, 10:59:36
SmokAnalog Pytanie tylko kto zapisuje w pliku błędy typu noti... 10.07.2014, 11:07:25
nospor CytatPytanie tylko kto zapisuje w pliku błędy typu... 10.07.2014, 11:12:32
by_ikar Nie trzeba być fanatykiem żadnego rozwiązania. Ale... 10.07.2014, 11:19:02
Crozin Możesz skorzystać z całkiem przyzwoitego komponent... 10.07.2014, 11:20:27
Sephirus Trochę OT ale moim zdaniem całe to zadanie nie ma ... 10.07.2014, 11:21:59
adbacz Ma to być prosta klasa, która będzie czymś na zasa... 13.07.2014, 09:30:29
Pyton_000 Nie przejmowałbym się tym.
Co do rozwiązania @by_i... 13.07.2014, 10:16:35
adbacz Mógłbym, ale co jeśli zwrócona wartość będzie stri... 13.07.2014, 10:23:17
Pyton_000 Może być czymkolwiek. Po prostu w metodzie robisz ... 13.07.2014, 11:38:45
adbacz Jak już pisałem wczesniej. Aplikacja używa kilku p... 13.07.2014, 19:01:27
Pyton_000 Tak,ujednolicić pliki konfiguracyjne 13.07.2014, 19:16:01 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 09:22 |