Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Projekt oparty o OOP
Forum PHP.pl > Forum > PHP
Fluke
Witam. Chciałem napisać mały projekt. Ma on za zadanie wyodrębnić warstwę prezentacji od logicznej. W tym celu na serwerze stworzyłem 3 katalog: view, controler i libs. W view mamy wszystko co ma styczność (raczej) z czystym HTML`em, controler jest odpowiedzialny jak by za podstrony, w libs mamy klasy.
I mam o to klasę:
  1. <?php
  2. class index
  3. {
  4. function __construct()
  5. {
  6. $opcja = $_GET['opcja'];
  7.  
  8. try
  9. {
  10.  
  11. if(file_exists('controls/' . $opcja . '.php')){
  12.  
  13. if($this->login()){
  14. include_once('controls/' . $opcja . '.php');
  15. $class = new $opcja($opcja);
  16. }else{
  17. echo 'Nie zalogowany';
  18. }
  19.  
  20.  
  21.  
  22. } else
  23. throw new Exception('Nie ma takiego pliku');
  24. } catch(Exception $e)
  25. {
  26. echo $e->getMessage();
  27. }
  28. }
  29.  
  30. function login()
  31. {
  32. if($_SESSION['login'] == true)
  33. return true;
  34. else
  35. return false;
  36. }
  37. }
  38.  
  39. function __autoload($className)
  40. {
  41. include_once('libs/' . $className . '.php');
  42. }
  43. ?>


Po wpisaniu do przeglądarki adresu: http://localhost/index.php?op=asd wywołuje nam kontroler asd.php, który jest klasą.

I teraz takie pytanie do was:
Czy ten sposób jest dobry?
Czy on jest odpowiednikiem OOP?
Czy przypomina wzorzec MVC?

Z góry dziękuję za odpowiedzi, pozdrawiam.
Crozin
Cytat
Czy ten sposób jest dobry?
1. Nazwa "index" naprawdę dużo mówi.
2. Obiekt nie powinien operować na danych pochodzących nie wiadomo skąd (z punktu widzenia jego interfejsu). Patrz: $_GET, $_SESSION.
3. Zamiast wyświetlać pierdoły typu "nie zalogowany", powinieneś wyrzucić wyjątek, który zostanie przechwycony przez coś od wyświetlania treści.
4. Zamiast Exception powinieneś utworzyć InvalidArgumentException.
Cytat
Czy on jest odpowiednikiem OOP?
Jakim odpowiednikiem?
Cytat
Czy przypomina wzorzec MVC?
Nie.
Fluke
Chodzi mi głównie o to czy w taki sposób można budować strony. Tzn: zamiast w index.php strukturalnie tworzyć kod stosując funkcje, tworzyć klasy i obiekty które będzie można wzbogacać lub dodawać nowe metody. A pytanie następne czy taka budowa jest logiczna.
Przykład z logowaniem jest tylko przykładem. Nie chciałem tutaj dawać bardziej rozbudowanego przykładu.

A dla czego nie przypomina wzorzec MVC? Czytałem o nim trochę i tyle co zrozumiałem to oddzielić logikę z prezentacją. Nie widziałem konkretnych przykładów implementacji tego wzorca jedynie wiem że nie które frameworki stosują ten wzorzec. Widziałem jak na razie symfony. Tam było struktura typu model, view control. Jeśli ktoś ma jakieś dobre przykłady to chętnie zobaczę.

Czy jest odpowiednikiem OOP?

Chodzi mi o to czy moja wersja opiera się o OOP? Czy taka logika jaką tutaj obrałem jest zgodna. Od około 2 tygodni rozpocząłem zabawę z programowaniem obiektowym i nigdy wcześniej nie miałem z nim styczności. Więc każde moje pytanie może okazać się głupie ale wyraża moje zainteresowanie do nawet największych pierdół, które nie zrozumiałem podczas uczenia się obiektówki.

Pozdrawiam.
Crozin
Cytat
A dla czego nie przypomina wzorzec MVC?
http://pl.wikipedia.org/wiki/Model-View-Controller czy to Ci wygląda jak opis architektury Twojego kodu? Nie.
Cytat
Chodzi mi o to czy moja wersja opiera się o OOP?
Nie można mówić o OOP mając na pokładzie jeden obiekt.

Cytat
Od około 2 tygodni rozpocząłem zabawę z programowaniem obiektowym i nigdy wcześniej nie miałem z nim styczności.
Jak masz taką możliwość daruj sobie na miesiąc PHP i poducz się samej ideologii OOP w jakimś języku, w którym to nieszczęsne OOP trzyma jakiś sensowny poziom (niestety obiektowość PHP pozostawia wiele do życzenia). W PHP również przykłady "z życia" wydają się być kompletnie bezsensowne. Z racji tego, iż PHP naprawdę mocno czerpie z Javy, polecałbym Ci poduczyć się przez miesiąc tego języka, a co za tym idzie obiektówki.

Wyniesiesz z tego dużo więcej w znaczenie krótszym czasie, po czym będziesz mógł wrócić do PHP.
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.