![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Piszę sobie mały projekcik i chciałbym zasięgnąć porady.
Mam klasę Storage, która prywatnie przechowuje tablicę asocjacyjną. Poprzez DI chciałbym klasę Storage dostarczyć do innej. Klasa Storage ma publiczną metodę get, która jeśli dany klucz istnieje istnieje w tablicy zwróci wartość, a jeśli nie ma... I tutaj jest zagwostka, tj. Można zwrócić null, false, lecz taka wartość może istnieć pod danym kluczem. Jak to rozwiązać, aby jednoznacznie identyfikować, że metoda nie znalazła danego klucza. Można wyjątkami, ale w mojej sytuacji chyba nie bardzo tutaj będzie pasować. Myślałem, żeby stworzyć prostą klasę, np. SensitiveValue i jeśli metoda zwróci instancję tej klasy to już nie problem dalej sobie poradzić. Co o tym myślicie? Ten post edytował Fred1485 14.07.2016, 14:45:50 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zależy od konkretnej potrzeby, ale na dobrą sprawę i tak musiałbyś sprawdzać czy $storage->get('x') instanceof SensitiveValue, więc równie dobrze możesz zrobić metodę get() i metodę has() i metodą has() sprawdzać czy masz klucz.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dobra, a wracając do kwestii wyjątków też można by zrobić tylko w tym przykładzie metoda w której wywołuje storage-> get ma blok try/catch i i bez problemu można by to zrobić lecz musiałbym miec w głównym bloku try jeszcze jeden try/catch obsługujący wywołanie metody get. Czy takie zagnieżdżane bloków try/catch nie jest uważane za złą praktykę?
Ten post edytował Fred1485 14.07.2016, 16:10:08 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:08 |