![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam do was takie pytanie odnośnie a la "wzorca" bo nie wiem czy to wzorzec czy może jakiś sposób działania(to pewnie wzorzec). Nie dotyczy on tylko framework`ów więc temat zamieściłem właśnie tutaj. A o to koncepcja: Mamy 3 katalogi - Entity - Logic - Table W katalogu "Entity" umieszczamy pliki związane z pojedynczym rekordem pobranym z bazy. Czyli mamy klasę "Entity_User" i w niej pola składowe: _name, _surname, _birthday... Oczywiście może zawierać referencje do innych "jednostek(Entity)" z innej tabeli. Przykład: user ma 1 zdjęcie. Pole składowe to: _userPhoto który zawiera referencję do obiektu Entity_Photo. Obiekty te będą miały metody modyfikujące jak i pobierające: getSome(), setSome()... W katalogu "Table" będą umieszczane pliki, które opisują daną tabelę. Czyli mamy bazie tabelę o nazwie "user" więc tworzymy obiekt "Table_User". W niej możemy zawrzeć takie dane jak: nazwa tabeli, kolumny z ich parametrami, adapter bazy, itp.. W katalogu "Logic" umieszczamy pliki które odpowiadają za całą logikę. Czyli gdy chcemy pobrać użytkownika z bazy danych oraz przypisać mu zdjęcie, definiujemy metodę getUser($id). Ta metoda będzie musiała stworzyć obiekt Table_User oraz wywołać metodę np: fetchOne($select) po czym stworzyć obiekt Entity_User do którego przypisze dane pobrane z bazy. Dodatkowo będzie musiała pobrać dane odnośnie zdjęcia użytkownika i znowu przypisać do obiektu Entity_Photo oraz do Entity_User przypisać ten obiekt. Pytanie dotyczy tego sposobu. Czy wy też wykonujecie takie czynności czy może inaczej. Czy metody modyfikujące oraz pobierające dane z bazy danych implementujecie w klasach typu Logic czy może Table. Jak w Table to co zawieracie w klasach Logic. Pozdrawiam i dziękuję. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. ORM-y generalnie dzielą się na dwie "rodziny" - oparte o wzorzec ActiveRecord bądź DataMapper. Możesz pogoogleać sobie za każdą z nich, poznać co różni je i dlaczego ActiveRecord to zło. (IMG:style_emoticons/default/wink.gif)
2. To co tutaj podałeś jako Table powinno leżeć raczej w gestii ORM-a, a nie bezpośrednio Twojego kodu. 3. Korzystaj z przestrzeni nazw; nie korzystaj z jakiś potworków w postaci znaku podkreślenia przed właściwościami niepublicznymi - na co to komu? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@Crozin
Dzieki za szybka odpowiedz. Zastanawial mnie jeszcze fakt tego zeby wszystkie pobierane dane z bazy danych umiescic w klasach typu table a w logice wybierac skompliowane dane ktore wymagaja pobrania dodatkowo z innych tabel. Poczym beda laczone w logiczna calosc i ewentualnie cachowane. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wydzielenie pobierania danych od ich przetwarzania jest bardzo dobrym pomysłem, który jest powszechnie stosowany. W zależności od wielkości projektu będziesz miał od jednego do kilku różnych obiektów odpowiedzialnych za samo pobieranie danych danego typu i całą masę innych obiektów korzystających z nich do pobierania/zapisywania danych i ich przetwarzania.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 00:46 |