Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Programowanie obiektowe, klasy w różnych plikach - ma sens?
krzysiek9394
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 4.09.2009

Ostrzeżenie: (0%)
-----


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.(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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? (IMG:style_emoticons/default/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?
Go to the top of the page
+Quote Post
krzysiek9394
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 4.09.2009

Ostrzeżenie: (0%)
-----


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)?
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Właśnie po to powstały wzorce, aby ich używać - tyle w tym temacie z mojej strony.
Go to the top of the page
+Quote Post
MateuszS
post
Post #5





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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 (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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ł. (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował Crozin 11.11.2009, 00:18:59
Go to the top of the page
+Quote Post
cojack
post
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


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!
Go to the top of the page
+Quote Post
thek
post
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.
Go to the top of the page
+Quote Post
krzysiek9394
post
Post #10





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 4.09.2009

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Crozin
post
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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).

Go to the top of the page
+Quote Post
krzysiek9394
post
Post #12





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 4.09.2009

Ostrzeżenie: (0%)
-----


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)?

Ten post edytował krzysiek9394 11.11.2009, 22:47:26
Go to the top of the page
+Quote Post
piotr94
post
Post #13





Grupa: Zarejestrowani
Postów: 331
Pomógł: 30
Dołączył: 11.11.2008
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
krzysiek9394
post
Post #14





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 4.09.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 03:25