Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] "Wrażliwe" wartości
Fred1485
post
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


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kapslokk
post
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.
Go to the top of the page
+Quote Post
Fred1485
post
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


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 04:08