![]() |
![]() |
![]()
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: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Widzisz, operator wytłumienia nie powinno się nigdy używać, czasami zachodzi taka potrzeba jak robimy coś na kolanie. Ten operator działa tak że wytłumia błąd, tzn ty go nie widzisz, ale ten błąd się nadal generuje, jak masz jakiegoś handlera, to jest on wywoływany, tyle że jest on "ukryty". Niech teraz takich błędów będzie wytłumione 20 razy, wtedy twój handler jest wywoływany 20 razy. Czyli zużyte zasoby są dużo większe. Dodatkowo kompiler opcode (kto w ogóle nie używa opcachera ?) przechowuje taki kawałek kodu w postaci 2-3 razy obszerniejszej. Jaki sens ma skrócenie kodu do 1 znaku, jeżeli jego wymagania będą takie jakby się użyło funkcji/klasy?
Pozatym autor chciał coś obiektowego, co by sugerował jego pierwszy post.. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Widzisz, operator wytłumienia nie powinno się nigdy używać Też tak uważałem, ale jednak nie warto popadać w skrajność. Jeśli jest używany z głową, to w czym problem? Traktowanie błędu jak jakiegoś kataklizmu jest dziwne. To lepiej kombinować z jakimiś rozwiązaniami typu kropki w indeksach niż po prostu powiedzieć interpreterowi: "jest w porządku, jeśli tu wyrzucisz błąd, bo wiem że będzie chodzić o brak klucza"? Małpa w tym kontekście ma w sobie coś fajnego, tzn.:
Zalecam zdrowy rozsądek zawsze i wszędzie. Jesteś pewien, że handlery błędów się wywołują przy stłumionych błędach? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 19:49 |