Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] struktura katalogów, require..
Forum PHP.pl > Forum > Przedszkole
AmbitnySwiezak
Witam. Piszę już jakiś czas dość rozbudowany projekt (jak na świeżaka).
Z każdym dniem narasta ilość kodu (plików wszelkiej maści php, tpl, scss, jsony itd) i coraz trudniej mi to ogarnąć.
Jak poradzić sobie z rozbudowaną strukturą bez stosowania wzorca MVC.

Pytania bardziej szczegółowe:

1. Co z zapytaniami do bazy danych znajdujących się w różnych plikach, np. w klasach.
Czy rozsądne jest posegregowanie zapytań na foldery np. GET/SET i wrzucenie tam funkcje z zapytaniami, które później będę includował do klasy?
Gdzie trzymac takie zapytania?

2. Czy rozsądne jest rozbijanie długich klas na kilka plików. Muszę użyć danej funkcji w metodzie.
Czy powinienem robić require/include do funkcji, czy najlepiej napisać nową w klasie?

3. Jak bardzo obciąża strone np 20 require?
Wiem, że pliki js aby zmniejszyć obciążenie serwera kompresuje się i łączy w jeden plik. Jak jest z PHP?
grzes999
Cytat(AmbitnySwiezak @ 26.01.2015, 15:07:56 ) *
Jak poradzić sobie z rozbudowaną strukturą bez stosowania wzorca MVC.


A dlaczego nie chcesz go stosować. Wzorce projektowe są po to żeby z nich korzystać i kod był bardziej przejrzysty dla ciebie i inych.

Cytat(AmbitnySwiezak @ 26.01.2015, 15:07:56 ) *
1. Co z zapytaniami do bazy danych znajdujących się w różnych plikach, np. w klasach.
Czy rozsądne jest posegregowanie zapytań na foldery np. GET/SET i wrzucenie tam funkcje z zapytaniami, które później będę includował do klasy?
Gdzie trzymac takie zapytania?


Wszystko zależy od złożoności proejktu jeśli zpaytań jest nie wiele, i sama baza danych składa się z 2 - 5 tabel to lepeiej wszsytkie zapytania trzymać w jdenj klasie specjalnie do tego stworzonej. W przypadku większej ilość tabel jak i zapytań, lepeiej rozbijać sobie zapytania do poszczególnych tabel na oddzielne klasy(Modele); ale to wszystko według upodobań

Cytat(AmbitnySwiezak @ 26.01.2015, 15:07:56 ) *
2. Czy rozsądne jest rozbijanie długich klas na kilka plików. Muszę użyć danej funkcji w metodzie.
Czy powinienem robić require/include do funkcji, czy najlepiej napisać nową w klasie?


W klasach nie ma funckji. To są metody. Nie wiem jak wyobrażasz rozbicie sobie klasy na mneijsze pliki. Możesz korzystać z dziedziczenia, żeby tworzyć bardziej wyspecjalizowane klasy. Wtedy klasa bazowa jak i jej pochodne mogą okazać się krótsze.

Cytat(AmbitnySwiezak @ 26.01.2015, 15:07:56 ) *
3. Jak bardzo obciąża strone np 20 require?
Wiem, że pliki js aby zmniejszyć obciążenie serwera kompresuje się i łączy w jeden plik. Jak jest z PHP?


Zainstaluj sobie np. Xhprof i będziesz mógł śledzić obciążenie serwera.
AmbitnySwiezak
Cytat(grzes999 @ 26.01.2015, 15:27:40 ) *
W klasach nie ma funckji. To są metody. Nie wiem jak wyobrażasz rozbicie sobie klasy na mneijsze pliki. Możesz korzystać z dziedziczenia, żeby tworzyć bardziej wyspecjalizowane klasy. Wtedy klasa bazowa jak i jej pochodne mogą okazać się krótsze.


Wiem, że w klasie nie ma funkcji. Nie o to chodzi.
przykład: Muszę użyć funkcji Y która jest używana w X różnych miejscach w projekcie.
Ma występować (coś generować) zarówno w klasach jak i funkcjach.
Zawsze mogę podać jako argument metody/konstruktora wynik działania funkcji.
Niestety wiąże się to z tym, że w pliku centralnym (gdzie mam już include klasy) będę musiał też includować plik z funkcją Y, a chciałbym tego uniknąć.
grzes999
Cytat(AmbitnySwiezak @ 26.01.2015, 15:52:48 ) *
Wiem, że w klasie nie ma funkcji. Nie o to chodzi.
przykład: Muszę użyć funkcji Y która jest używana w X różnych miejscach w projekcie.
Ma występować (coś generować) zarówno w klasach jak i funkcjach.
Zawsze mogę podać jako argument metody/konstruktora wynik działania funkcji.
Niestety wiąże się to z tym, że w pliku centralnym (gdzie mam już include klasy) będę musiał też includować plik z funkcją Y, a chciałbym tego uniknąć.


Jeżli wykorzystujesz daną metoda kilka razy w różnych miejsach to includujesz tyle razy ile jest potrzeba. Nie ma sensu pisania tej samej metody więcej niż raz. Chyba, że jest to metoda przeciażona(ale tego w PHP chyba jeszcze nie ma). Przy towrzeniu klas, metod musisz pomysleć czy czegoś nie da sie zrobić prościej, szybciej, lepiej.
Pyton_000
Cytat(grzes999 @ 26.01.2015, 15:27:40 ) *
W klasach nie ma funckji. To są metody.

Metody to też funkcje wink.gif Tak więc Są funkcje w klasach wink.gif Chyba że mi udowodnisz że jest inaczej.
grzes999
Cytat(Pyton_000 @ 26.01.2015, 16:05:18 ) *
Metody to też funkcje wink.gif Tak więc Są funkcje w klasach wink.gif Chyba że mi udowodnisz że jest inaczej.


Nie chcę sie spierać; ale zawsze mi wałkowano, że w programowaniu obiektowym nie używa się funkcji tylko metod.
Funkcja coś robi zazwyczaj; a metoda nie koniecznie np. metody abstrakcyjne
AmbitnySwiezak
Cytat(grzes999)
W przypadku większej ilość tabel jak i zapytań, lepeiej rozbijać sobie zapytania do poszczególnych tabel na oddzielne klasy(Modele);


Osobne klasy do samej obsługi zapytań?
Jak mam np tabele Userzy, Testy, Wyniki, itd. - idzie do nich po kilknaście/kilkadziesiąt różnych zapytań.
Zastosować do obsługi każdej tabeli osobną klasę? Jak robia Guru? Jest jakiś złoty srodek, architektura, czy wszystko jest głównie uzależnione od sytuacji.

Cytat(grzes999)
..Przy towrzeniu klas, metod musisz pomysleć czy czegoś nie da sie zrobić prościej, szybciej, lepiej.


Nie śpię, tylko myslę o tym smile.gif
grzes999
Cytat(AmbitnySwiezak @ 26.01.2015, 16:18:17 ) *
Osobne klasy do samej obsługi zapytań?
Jak mam np tabele Userzy, Testy, Wyniki, itd. - idzie do nich po kilknaście/kilkadziesiąt różnych zapytań.
Zastosować do obsługi każdej tabeli osobną klasę? Jak robia Guru? Jest jakiś złoty srodek, architektura, czy wszystko jest głównie uzależnione od sytuacji.


Przy korzystaniu z mapowania relacyjno-obiektowego dla każdej tabeli towrzysz klasę(Model) i masz tabelę odzwiercedloną w obiekcie.
Innym plusem stosowania tego rozwiazania jest to, że wiesz, że zapytania do tabeli user masz tam i tylko tam nie musisz przeszukiwać tysieci linii kodu, żeby znaleść konkretne. Możesz też zrobić po jednej klasę do Selectów,Updatów,Insertów i w konstruktorze podawać nazwę tabeli, a w parametrach metod kolumny tabeli.
Jest mnóstwo rozwiązań tego problemu po prostu musisz wybrać to ci ci odpowiada najbardziej.
AmbitnySwiezak
Przeanalizuje. Dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.