Prosta aplikacja w PHP z wykorzystaniem wzorca MVC

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!

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.

0

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

0

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

0

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

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.

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?

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();
 }
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.

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

0

@Webowiec

To nie jest wcale takie proste do zrozumienia przynajmniej dla początkujących albo tych którzy programują w starym stylu. Zresztą ten tutorial jest tylko pomostem do MVC i frameworków, owszem jest w miarę przejrzyście napisany i wszystko jest tam wyjaśnione ale to nie jest gwarantem, że od razu łatwo można to zrozumieć.

Dodam tylko tyle, że frameworki mają dla przykładu coś takiego, że nie ma bezpośredniego dostępu do tych plików php w katalogach aplikacji, dodatkowo jeszcze jest możliwość zablokowania możliwości w ogóle przeglądania poszczególnych katalogów, np. przy pomocy htaccess albo przy pomocy plików index.php, tego w tym artykule nie ma.

We FW takich jak np. Kohana będzie jeszcze routing i konfiguracja, przyjazdne adresy, i18n, co niestety na początku nie będzie takie proste do zrozumienia.

Zresztą jeszcze nie tak dawno temu rozważałem właśnie możliwość napisania strony www zaczynając całkowicie od zera jak w tym tutorialu podanym tam wyżej ale szybko z tego zrezygnowałem na rzecz frameworka i słusznie, nadałbym sobie tylko niepotrzebnie bardzo dużo roboty.

0
Webowiec napisał(a):

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

Nie wiem po co taki komentarz. Przejdź do pierwszego postu. Prosiłem w nim o przykład prostej aplikacji z wykorzystaniem MVC. Samo przez się mówi, że skoro MVC to także OOP. Ale mniejsza o to. poza tym trafiłeś w sedno. Nie mam zbyt dużego pojęcia na temat programowania obiektowego w PHP ale chcę się tego nauczyć. Posiadam wiedzę na temat programowania strukturalnego. Stworzyłem już dość rozbudowaną aplikację podzieloną na kilkadziesiąt przeróżnych plików i katalogów. Panuje w kodzie straszny chaos a zmiana jednej rzeczy w całej aplikacji np. jakiejś funkcji zajmuje mi bardzo dużo czasu, gdyż muszę wszystko skrupulatnie zmieniać w każdym z plików, co jest męczące i łatwo o pomyłkę. Chcę się nauczyć programowania obiektowego ale z wykorzystaniem MVC. Nie chcę korzystać póki co z żadnych frameworków, bo chcę od podszewki poznać samo OOP i model MVC.
W swojej aplikacji wykorzystuję bazę danych MySQL oraz klasę PDO. Aplikacja, którą tworzę ma zostać wydana przeze mnie jako oficjalny projekt dlatego chcę zadbać o przejrzystość kodu. Co to za aplikacja? Na razie nie istotne - wszystko w swoim czasie. Czy zna ktoś jakiś konkretny poradnik/tutorial/film gdzie tłumaczone jest wszystko od podstaw? Najlepiej gdyby to była cała seria. Jeśli ktoś coś wie to proszę o jakieś informacje na ten temat.

0

Wybierz sobie:

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