![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jestem bardziej programistą Javy, jak PHP, dlatego nie jest pewien jaki sposób pisania kodu jest najbardziej wydajny. Załóżmy, że mam obiekt komentarz, który w konstruktorze łączy się z bazą danych i pobiera z niej wszystkie wartości odnośnie danego komentarza, typu np. id_komentarz, tresc, autor no i id_artykul, czy id artykulu w bazie do którgo komentarz się odnosi. I teraz, aby wydajnie pobierać dalsze informację odnośnie tego artykułu z poziomu klasy komentarz, mam jako pole pustą zmienną, która jest inicjalizowana raz, kiedy na obiekcie pola komentarz wywoła się metoda chcąca pobrać dodatkowe info odnośnie komentarza, np. getArticleTitle();. Inicjalizacja czyli wywołanie konstruktora z parametrem id, który łączy się z bazą danych i pobiera dane artykułu. Zastanawiam się tylko, czy to jest dobre rozwiązanie pod względem wydajności i bezpieczeństwa. Dzięki za wszelkie opinie |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Takiej metody jak Comment::getArticleTitle() w ogóle nie powinno* być. Możesz utworzyć Comment::getArticle(), która zwróci obiekt artykułu powiązanego z danym komentarzem, a ten z kolei może udostępniać metodę Article::getTitle().
2. Generalnie próbujesz utworzyć ORMa - może warto by zapoznać się z już istniejącymi? Doctrine2 czerpie garściami z Hibernate, którego może już znasz - nie powinieneś mieć problemów ze zrozumieniem jego działania. Zresztą może po prostu warto użyć owego Doctrine (czy też innego ORMa) zamiast pisać od podstaw własnego? 3. Takie "późne pobranie" danych dot. artykułu, dopiero w momencie gdy są rzeczywiście potrzebne (tutaj: przy wywołaniu metody Comment::getArticle()) nazwa się Lazy Loading - i jest to świetne rozwiązanie gdy np. pobieramy 50 komentarzy przyporządkowanych do różnych artykułów, ale tylko w przypadku jednego komentarza chcemy uzyskać dostęp do artykułu powiązanego z nim. * Jeżeli już, to powinna być tzw. metodą-proxy, tj.: Jednak w tym przypadku stworzenie takiej metody wydaje się być kompletnie bezpodstawne i niepotrzebne. Ten post edytował Crozin 25.11.2010, 17:51:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 16:20 |