Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Programowanie obiektowe, klasy w różnych plikach - ma sens?
Forum PHP.pl > Forum > PHP
krzysiek9394
Witam. Czy jest sens pisania kodu strony(większej) w PHP obiektowo i umieszczania różnych klas w różnych plikach np. plik article.class.php w którym byłaby klasa article z funkcjami np. get($nazwa), $add($nazwa, ...), $edit($nazwa, ...), $delete($nazwa) itd. ? (widok strony działałby na Smarty). Czy jest sens tworzenia wielu klas np. article, news, sql itd.questionmark.gif
erix
Cytat
Witam. Czy jest sens pisania kodu strony(większej) w PHP obiektowo i umieszczania różnych klas w różnych plikach

A ogarniesz bez problemu tasiemca ze 100 000 linijek? tongue.gif Edytor pewnie zacznie mulić, o "wygodzie" przewijania nie wspomnę.

Cytat
Czy jest sens tworzenia wielu klas np. article, news, sql itd.

Co przez to rozumiesz?
krzysiek9394
Chodzi mi o to czy jest sens robić wiele klas (obsługująca artykuły, newsy, sql itd.) nie wykorzystując wzorców projektowych(jak np. MVC)?
Fifi209
Właśnie po to powstały wzorce, aby ich używać - tyle w tym temacie z mojej strony.
MateuszS
fifi209 ale nie ma obowiązku ich używać. Sam też nie jestem zwolennikiem tych wzorców. Najlepiej jest samemu przemyśleć jak to ma wyglądać, wtedy więcej się nauczysz.
phpion
Cytat(MateuszScirka @ 11.11.2009, 02:01:56 ) *
Najlepiej jest samemu przemyśleć jak to ma wyglądać, wtedy więcej się nauczysz.

Jasne. W końcu dojdziesz do rozwiązania, które ktoś już kiedyś wymyślił, które obecnie nazywane jest wzorcem projektowym. No ale co przemyślisz to twoje biggrin.gif
Crozin
Cytat
Chodzi mi o to czy jest sens robić wiele klas (obsługująca artykuły, newsy, sql itd.)
Jeżeli chcesz by każdy z wymienionych wyżej elementów był reprezentowany przez obiekt i elementy te nie są identyczne to konieczne jest utworzenie dla nich osobnych klas, z których to będą one tworzone.
Cytat
nie wykorzystując wzorców projektowych(jak np. MVC)?
Czy mi się wydaje, czy napisałeś, że zrobienie kilku klas kłóci się z jakimś wzorcem?
Cytat
Sam też nie jestem zwolennikiem tych wzorców. Najlepiej jest samemu przemyśleć jak to ma wyglądać, wtedy więcej się nauczysz.
Ale wiesz, że wzorce projektowe to gotowe rozwiązania (a raczej propozycje na rozwiązanie) popularnych problemów? Zapewne, gdy tak uciekasz od tego co wymyślili inni ludzie albo:
1) Wymyślisz coś gorszego bo nie będziesz miał odpowiedniej ilości czasu do przetestowania danego rozwiązania (szczególnie chodzi o testowanie "w akcji")
2) Wymyślisz to samo i zmarnujesz dużo czasu

EDIT: phpion mnie uprzedził. winksmiley.jpg
cojack
W Programowaniu jest pewna złota zasada, dziel i zwyciężaj. Czyli odnosi się ona w ten sposob do programowania ( bo wszak każdy napisany przez nas kod jest algorytmem ) by dzielić problem na mniejsze kawałki kodu. I każda klasa powinna się zawierać w osobnym pliku, powtarzam KAŻDA!
thek
To może ja dorzucę dlaczego wygodnie jest podzielić, co zresztą widać we frameworkach... Chodzi o automatyczne ładowanie klas. Wiele osób idzie jeszcze dalej niż Ty. Spójrz na framework Kohana bo to dobry przykład. Tam nie tylko jest rozice na klasę w takim pojęciu jak Ty. Tam jest to jeszcze bardziej rozbite. Gdyż klasa domyślnie nie jest jednym plikiem, ale 2 lub 3, gdyż osobny plik klasy odpowiada za M, osobny za V i jeszcze jeden za C. Dzięki temu ładowane jes tylko to, co niezbędne, a nie przykładowo cała klasa z widokami, których nie zawsze użyjesz. do tego łatwiej zorientować się w kodzie dzięki temu, bo wiesz co i gdzie jest. Nie jest bowiem ważne, że serwis jest na kilkudziesięciu plikach, skoro wszystko jest tak usystematyzowane, że nawet obudzony w środku nocy potrafiłbyś wyrecytować konkretne miejsca gdzie to jest. A przeszukaj sobie plik mający sumarycznie już kilka tysięcy linii to się załamiesz.
krzysiek9394
ok poczytałem co nieco o MVC i nie jestem pewien czy dobrze to zrozumiałem:
1. Użytkownik wpisuje do przeglądarki np. strona.pl/index.php?akcja=artykul&nazwa=nazwa-artykulu
2. Router stwierdza że kontroler to artykul a parametr to nazwa-artykulu
3. Router sprawdza czy istnieje plik artykul.php w katalogu controlers(tam gdzie są kontrolery)
4. Uruchamiana jest domyślna akcja kontrolera artykul (np. wyswietlenie artykulu) gdyż nie został podany parametr akcji
4a. Kontroler pobiera dane z modelu (np. funkcja getArticle($nazwa))
4b. Kontroler przekazuje dane do widoku
5. Strona jest wyświetlona

dobrze to zrozumiałem?
Crozin
Do routera powinieneś przekazać strona.pl/index.php?akcja=artykul&nazwa=nazwa-artykulu, a otrzymać z niego powinieneś kontroler=artykuł&akcja=akcjaDomyślna&parametr[nazwa]=nazwa-artykułu. Innymi słowy: router ma na podstawie danych wejściowych (tutaj: adres URL) sobie tylko znanymi sposobami określić minimum jakim jest kontroler i akcja oraz ewentualnie jeszcze jakieś parametry lub wyrzucić wyjątek w momencie, gdy nie potrafi określić kontrolera i/lub akcji. Nic więcej nie powinien robić (to czy plik istnieje czy nie, go już nie obchodzi).

krzysiek9394
czyli że router wybiera tylko zmienne z adresu do $_GET? A filtrowanie danych (przeciwko xss itd.) to też zadanie routera? A gdzie ma być includowany odpowiedni kontroler (wcześniej sprawdzając oczywiście czy takowy istnieje)?
piotr94
a serwer gdzie?? mówicie tylko o routerze...
A co do klas, to jest sens ich tworzenia, bo wtedy wiesz co jest do czego (wiesz gdzie masz obsługę bazy danych slq, wiesz gdzie masz obsługę wyświetlania newsów itd...)
a nie szukasz po 1000 linijek jednej wielkiej klasy do obsługi wszystkiego.
krzysiek9394
Cytat(krzysiek9394 @ 11.11.2009, 22:46:04 ) *
czyli że router wybiera tylko zmienne z adresu do $_GET? A filtrowanie danych (przeciwko xss itd.) to też zadanie routera? A gdzie ma być includowany odpowiedni kontroler (wcześniej sprawdzając oczywiście czy takowy istnieje)?


odświeżam

nikt nie umie odpowiedzieć? xX
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.