Witam
Robie prosta galerię w PHP i MySQL.
Buduję ją obiektowo.
Jej struktura wygląda tak:
Klasa Photo dziedziczy z klasy genericObject
Klasa generictObject to chyba to samo, co activeRecord, ja swoją nazwę wziąłem z książki: PHP5 zaawansowane programowanie, (jeśli to nie jest to samo to proszę o wyjaśnienie).
Klasa genericObject reprezentuje jeden wiersz z tabeli (w tym przypadku jest to tabele Photos).
Mam też klasę genericObjectCollection, która w moim przypadku jest kolekcja klasy Photo i implementuje, jak to w książce nazwano ‘leniwą konkretyzacje’.
Klasa, która łączy te elementy w całość to klasa Galery, która posiada metody np. getPhotosByCategory(), getPhotosById(), getAllPhotos(), AddPhoto(), DeletePhoto(), MakeMiniPhoto().
Jest tez klasa uploader, która pozwala na załadowanie zdjęcia na serwer.
Przykład działania:
Za pomocą metod klasy uploader umieszczam zdjęcie w odpowiednim katalogu na serwerze.
Jeśli ta operacja się powiedzie tworzy się egzemplarz klasy Gallery, do którego przekazywana jest ścieżka pliku oraz dane z formularza takie jak opis, kategoria itp.
Klasa Gallery tworzy też miniaturkę zdjęcia i dopasowuje docelowe zdjęcie do zadanych parametrów (rozmiar, jakość kompresji).
Jeśli operacja dostosowania zdjęcia lub zapis informacji do bazy nie powiedzie się, to zostaje wygenerowany wyjątek, który oprócz komunikatu usuwa również plik zdjęcia z serwera.
Oprócz tego co napisałem są jeszcze klasy takie jak kategorie zdjęć itp.
Mam pytanie czy taka konstrukcja jak tu przedstawiłem ma sens?
W jaki sposób można tym jakoś elegancko zarządzać, żeby nie trzeba było używać np. switch ,które z zależności co jest przekazywane przez tablicę $_GET[] wykonuje odpowiednie działanie. Czy jest do tego jakiś wzorzec projektowy który by do tego pasował?