Prosta aplikacja w PHP z wykorzystaniem wzorca MVC

Czarny Krawiec
2015-06-04 23:22
Czarny Krawiec
0

Witam,
zastanawiam się nad nauką MVC. Niestety nie bardzo go rozumiem. Miałbym prośbę. Czy mógłby mi ktoś napisać jakąś bardzo prostą aplikację z użyciem wzorca MVC? Nie chodzi mi o pisanie rozbudowanych aplikacji tylko o bardzo prościutką aplikację prezentującą sam schemat jej działania oraz ułożenie katalogów. Wiem, że może zły dział lub bezsensowny temat ale najlepiej jest uczyć się na konkretnych przykładach. W razie czego proszę o przeniesienie. Również jestem świadom tego, że w internecie jest mnóstwo aplikacji z użyciem MVC, lecz są one zazwyczaj bardziej rozbudowane. Jeśli miałby ktoś chwilkę i odrobinkę dobrej woli to proszę o pomoc.
Pozdrawiam!

Pozostało 580 znaków

2015-06-04 23:30

Rejestracja: 6 lat temu

Ostatnio: 3 lata temu

Czarny Krawiec
2015-06-04 23:45
Czarny Krawiec
0

No tak tylko, że póki co wolę stronić od tego typu poradników, gdyż mało z nich rozumiem. A MVC przeglądając różne fora ludzie wykorzystują do łączenia się z bazą danych i wykonywania zapytań jakichś "specjalistycznych" klas. Każdy z nich ma jakąś inną, własną. Gubię się już w tym gdyż nie wiem czego używać. Bardzo jeszcze raz bym prosił o najprostszą aplikację z możliwych. Prosty "Hello World" prezentujący użycie wzorca MVC.

Pozostało 580 znaków

2015-06-05 00:30
Moderator

Rejestracja: 12 lat temu

Ostatnio: 4 godziny temu

Lokalizacja: Wrocław

0

Pobierz Yii, imho jeden z najprostszych i najlżejszych frameworków do MVC, i przekonaj się sam.


Pozostało 580 znaków

Czarny Krawiec
2015-06-05 00:42
Czarny Krawiec
0

Nie chcę korzystać z frameworków lecz z "czystego" kodu pisanego w PHP.

Pozostało 580 znaków

2015-06-05 00:49
Moderator

Rejestracja: 12 lat temu

Ostatnio: 4 godziny temu

Lokalizacja: Wrocław

0

No okej, ale chcesz przykład - masz zawarty we frameworku.
Ewentualnie otwórz ten link od @Tumeg i przeczytajże chociaż.


edytowany 1x, ostatnio: Patryk27, 2015-06-05 00:49

Pozostało 580 znaków

2015-06-05 02:11

Rejestracja: 6 lat temu

Ostatnio: 4 dni temu

1

MVC Model View Controller.

Tu masz dobry przykład: https://r.je/mvc-tutorial-real-application-example.html

Model - Tutaj masz jakąś klasę, jakieś metody. Chodzi że model to to na czym wykonujesz. Przykładowo mógłbyś mieć model Book i tam takie pola jak imię autora, nazwisko, ilość stron, rok wydania etc... Jakieś metody też Podrzyj, Zakup, Sprzedaj, Wypożycz, Spal na stosie

View przedstawia w jaki sposób będzie to przedstawione, to jest to co będzie widział User gdy wejdzie na stronę.

Controller - logika strony taka.


Life is Strange
edytowany 1x, ostatnio: lightinside, 2015-06-05 02:15
Spal na stosie to raczej w klasie Witch. ;) - somekind 2015-06-05 09:50

Pozostało 580 znaków

Czarny Krawiec
2015-06-05 11:56
Czarny Krawiec
0

Znalazłem pod tym linkiem całkiem ciekawy przykład:
http://phpedia.pl/wiki/Model_View_Controller

Jest to jednak w jednym pliku dlatego podzieliłem to na kilka.
Schemat wygląda tak:

controller
-controller.class.php
model
-model.class.php
view
-view.class.php
index.php

Wszystko w osobnych plikach(kod taki sam jak w linku wyżej), natomiast w pliku index.php:

<?php
    include 'model/model.class.php';
    include 'view/view.class.php';
    include 'controller/controller.class.php';
    new Controller();
?>

I teraz mam pytanie. Czy takie ułożenie jest poprawnie skonstruowane pod względem MVC?

Pozostało 580 znaków

2015-06-05 12:15

Rejestracja: 10 lat temu

Ostatnio: 18 godzin temu

Lokalizacja: Krasnystaw

0

Tak w ogóle to chyba klasyczny MVC w zasadzie to nie jest praktycznie stosowany, jak już to raczej MVP, widok pasywny, zresztą jakby tak przeanalizować frameworki, to chyba na tym to się wszystko opiera.

Coś tam kiedyś tworzyłem więc mogę podać tu prosty przykład. Ogólnie jednak założenie było takie:

http://localhost/index.php?controller=welcome&action=index

Czyli w index.php jest tworzony WelcomeController i jego akcja index.

Np. tak:

<?php
 if (array_key_exists('controller', $_GET) && array_key_exists('action', $_GET))
 {
     $name = $_GET['controller'];
     if (file_exists('application/controllers/'. $name . '.php'))
     {
         include 'application/controllers/'. $name . '.php';

         $class = ucfirst($name) . 'Controller';
         $controller = new $class();
         $action = $_GET['action'];
         if (method_exists($controller, $action))
         {
             $controller->$action();
         }
         else
         {
             include 'application/views/errors/404.php';
         }
     }
     else
     {
          include 'application/views/errors/404.php';
     }

 }
 else
 {
     include 'application/controllers/welcome.php';
     $controller = new WelcomeController();
     $controller->index();
 }
Przefiltruj chociaż $name pod kątem podejrzanych nazw, bo masz tutaj file inclusion vulnerability. - Patryk27 2015-06-05 12:39
Po prostu dodaj sprawdzanie wyrażeniem regularnym, czy $name zawiera tylko znaki a-z. - Patryk27 2015-06-05 14:35

Pozostało 580 znaków

2015-06-05 15:01

Rejestracja: 10 lat temu

Ostatnio: 18 godzin temu

Lokalizacja: Krasnystaw

0

@ Czarny Krawiec

Wystarczy że choć pobieżnie zapoznasz się z jednym z frameworków a dojdziesz do wniosku że nie ma sensu bawić się w ten sposób w jaki zamierzasz.

Przejrzyj to:
http://kohana-php.com.pl/

Zabawa w tworzenie czegoś od zera, nawet w oparciu o MVC, ba bazie tutoriala który znalazłeś generalnie nie ma sensu - za dużo roboty.

edytowany 1x, ostatnio: drorat1, 2015-06-05 15:01

Pozostało 580 znaków

2015-06-05 17:40

Rejestracja: 6 lat temu

Ostatnio: 2 lata temu

0

Czarny, Jeśli nie rozumiesz tego co ci podał @Tumeg - a jest to tak przejrzyście, jasno i z przykładami napisane, to nie wiem jaką ty masz wiedzę. Może weź się lepiej za podstawy programowania obiektowego...

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0