Blog php

php news, php tutorial – porady programisty

Czym jest MVC?

piątek
kwi 9,2010

Model View Controller MCV jest sprawdzonym wzorcem na oddzielenie interfejsu użytkownika od warstwy logicznej aplikacji. Pierwotnym celem MVC jest odizolowanie Interfejsu użytkownika i umożliwienie operowania na oddzielonej od widoku warstwie logicznej aplikacji. Powód który zadecydował iż w MVC mamy podział na interfejs użytkownika(widok) i warstwę logiczna jest bardzo instynktowny, każdy z tych komponentów ma inne
zadania i powinien móc być wymienialny bez ingerencji w drugi. Właśnie dzięki takiemu podziałowi możemy dowolnie zmieniać interfejs użytkownika, bez potrzeby ingerencji w warstwę logiczną aplikacji i vice versa. MVC czasem błędnie jest mylone z innymi wzorcami, które mają na celu odseparowanie interfejsu użytkownika od warstwy logicznej, takim jak na przykład „Presentation Abstraction Control”.

MVC składa się z trzech części:
• Model – enkapsulacja danych,
• Widok – przedstawienie danych uzyskanych od modelu, użytkownikowi,
• Kontroler – otrzymuje żądanie i analizuje dane wejściowe, po czym uruchamia odpowiedni model i widok.

Powodami dla jakich wyodrębniamy te trzy warstwy, są zależności między nimi i oddzielne cele. Kontroler analizuje żądanie, model zajmuje się przetwarzaniem danych, widok zaś zajmuje się przedstawieniem ich użytkownikowi.

  • Tekst przełożony z angielskiego, oryginał znajduje się na:
    http://www.phpwact.org/pattern/model_view_controller

  • Bierny Model

    poniedziałek
    kwi 5,2010

    W trybie biernym(pasywnym), obiekty używane w modelu, nie zostały zaprojektowane do używania ich w trójce MVC. Kontroler jest odpowiedzialny za sygnalizacje widokowi, gdy wykonuje on operacje na modelu, które wymagają zaktualizowania danych w widoku.

    Bierny model jest powszechnie wykorzystywany w WEB MVC. Surowe żądanie/odpowiedz z cyklu HTTP nie wymaga aktywnego modelu. Interfejs użytkownika zostaje za każdym zbudowany na nowo, po mino zmian tylko w obrębie modelu (**autor: w aplikacji PHP nie mamy „trwałej” sesji i za każdym odwołaniem cały interfejs użytkownika, jest budowany na nowo – w przeciwieństwie do aplikacji, np.: systemowych, gdzie to zainicjowany szkielet jest wykorzystywany ciągle**). Doskonale to widać w PHP gdzie żaden stan nie jest zachowywany pomiędzy żądaniami klienta (budowa od nowa całego interfejsu).

    Tekst przełożony z angielskiego, oryginał znajduje się na:
    http://www.phpwact.org/pattern/model_view_controller

    poniedziałek
    mar 22,2010

    Skoro już wspomniałem parę razy o tych argumentach to wypadałoby coś o nich napisać, więc, do metod funkcji możemy wprowadzać argumenty (zmienne z zewnątrz), dzięki czemu możemy wykonywać na nich operacje. Zaczniemy od przerobienia trochę naszej klasy komputer, w wlacz będzie można podać powód włączenia (jak nie będzie podany to zostanie dany ustawiony przez nas) i przy okazji zamiast wyświetlać informacje będzie ona nam zwracana, a my zrobimy, co tylko będziemy z nią chcieć, na początku kod:

    <?php
     
    class Komputer {
                  function wlacz( $komunikat = ‘Brak powodu’ ) {
                           return ‘Komputer włączony z powodu:.$komunikat;
                  }
    }
     
    $komputerTaty = new Komputer();
    $info = $komputerTaty->wlacz( ’przegladania internetu’ );
    echo $info.<br />;
     
    $komputerMamy = new Komputer();
    echo $komputerMamy->wlacz();
     
    ?>

    Wiec posiadamy tutaj jedna klasę komputer, która przedstawia nam komputer, dzięki czemu możemy ja jedna przedstawić i komputer taty i mamy. Przyjmy się wpierw wynikom, do zmiennej $komputerTaty zostaje przypisana klasa komputer, następnie zostaje wywołana metoda wlacz która oczekuje podania parametru (powodu włączenia), w razie braku argumentu zostaje przypisane zmiennej taka wartość jaką mamy po znaku równa się (=), czyli może być to cokolwiek string, true/false, array, null, etc.). W metodzie wlacz pojawia się return, ta instrukcja zwraca dana wartość, i od razu powoduje zatrzymanie wykonywania metody (czyli to co znajduje się po return nie zostaje wykonane), w naszej metodzie jest zwracany ciąg znaków (string), także zostaje on przypisany do zmiennej $info, a następnie zmienna $info zostaje wyświetlona. Wynikiem tego działania jest na ekranie:

    Komputer włączony z powodu: przegladania internetu

    Komputer mamy zachowuje się trochę inaczej, wpierw zmiennej $komputerMamy zostaje przypisana klasa komputer (ta sama co tacie, tylko że obydwie działają nie zależnie – tak jakby kopie, co jak widać jest bardzo wygodne piszemy jednak klasę i możemy używać jej w wielu miejscach bez potrzeby powielania kodu!). Potem wykonywana jest metoda wlacz do której nie podajemy parametrów więc zostaje przypisany domyślny i całość zostaje zwrócona, a następnie wyświetlona, rezultat:

    Komputer włączony z powodu: Brak powodu