Co to jest framework PHP MVC?
PHP MVC to wzorzec projektowy aplikacji, który oddziela dane aplikacji i logikę biznesową (model) od prezentacji (widoku). MVC oznacza model, widok i kontroler.
Kontroler pośredniczy między modelami i widokami.
Pomyśl o wzorcu projektowym MVC jak o samochodzie i kierowcy.
Samochód ma przednie szyby (widok), których kierowca (kontroler) używa do monitorowania ruchu przed nim, a następnie prędkości lub hamowania (model) w zależności od tego, co widzi przed sobą.
Dlaczego warto korzystać z PHP MVC Framework?
- Struktury PHP MVC upraszczają pracę ze złożonymi technologiami poprzez;
- Ukrywanie wszystkich skomplikowanych szczegółów implementacji
- Dostarczanie standardowych metod, których możemy użyć do budowania naszych aplikacji.
- Zwiększona produktywność programistów, ponieważ podstawowa implementacja działań, takich jak łączenie się z bazą danych, oczyszczanie danych wejściowych użytkownika itp., Jest już częściowo zaimplementowana.
- Przestrzeganie profesjonalnych standardów kodowania
W tym samouczku nauczysz się:
- Wzorzec projektowy PHP MVC
- Rodzaje frameworka PHP MVC
- Przeniesienie aplikacji ankietowej do CodeIgniter
- Ustawienia konfiguracji bazy danych
- Tworzenie naszego modelu
- Tworzenie naszych poglądów
- Testowanie naszej aplikacji
Wzorzec projektowy PHP MVC
Omówmy teraz pokrótce każdy składnik wzorca projektowego MVC.
Model - ta część dotyczy logiki biznesowej i danych aplikacji. Może służyć do sprawdzania poprawności danych, przetwarzania danych i ich przechowywania. Dane mogą pochodzić z;
- plik płaski
- Baza danych
- Dokument XML
- Inne ważne źródła danych.
Kontroler - jest to część zajmująca się żądaniami użytkowników o zasoby z serwera.
Na przykład, gdy użytkownik zażąda adresu URL… /index.php?products=list, kontroler załaduje model produktów, aby pobrać dane produktów, a następnie wyświetli wyniki w widoku listy.
Krótko mówiąc, kontroler łączy ze sobą modele i widoki w zależności od żądanych zasobów.
Widoki - ta część dotyczy prezentacji danych użytkownikowi. Zwykle ma to postać stron HTML.
Rodzaje frameworka PHP MVC
Wybór najlepszego frameworka PHP jest wyzwaniem.
Nie musisz pisać własnego frameworka, aby skorzystać z zalet MVC.
Należy tylko próbować utworzyć własny projekt aplikacji powiązany z MVC, aby zrozumieć, jak działają struktury MVC.
Gdy już zaznajomisz się ze sposobem działania frameworków MVC, powinieneś przejść do dojrzałych i już przetestowanych frameworków.
Poniższa tabela pokrótce opisuje niektóre z popularnych frameworków php i funkcje, które oferuje każdy framework.
Struktura | Opis |
---|---|
CodeIgniter https://codeigniter.com/ | Jest to jeden z najpopularniejszych frameworków PHP MVC. Jest lekki i ma krótką krzywą uczenia się. Zawiera bogaty zestaw bibliotek, które pomagają w szybkim tworzeniu witryn internetowych i aplikacji. Użytkownicy z ograniczoną wiedzą na temat programowania OOP również mogą z niego korzystać. Aplikacje oparte na CodeIgniter obejmują;
|
Kohana http://kohanaframework.org | Jest to bezpieczna i lekka struktura Hierarchical Model View Controller HMVC. Posiada bogaty zestaw komponentów do szybkiego tworzenia aplikacji. Firmy korzystające z Kohana obejmują;
|
CakePHP www.cakephp.org | Wzorowany na Ruby na szynach. Jest znany z takich koncepcji, jak wzorce projektowania oprogramowania, konwencja nad konfiguracją, ActiveRecord itp. Aplikacje oparte na CakePHP obejmują;
|
www.framework.zend.com Zend | To jest potężna struktura;
|
Przeniesienie aplikacji ankietowej do CodeIgniter
W tym samouczku stworzyliśmy aplikację ankietową PHP. Tutaj przeniesiemy ten kod do CodeIgniter
- Pobierz najnowszą wersję CodeIgniter z ich strony internetowej.
- Rozpakuj zawartość spakowanego pliku do katalogu programistycznego w katalogu serwera WWW. W tej lekcji użyjemy ciopinionpoll jako nazwy folderu.
- Przejdź do adresu URL http: // localhost / ciopinionpoll /
Teraz zamierzamy przenieść naszą aplikację ankietową do CodeIgniter. Przypomnijmy, że nasza aplikacja została podzielona na trzy główne komponenty, a mianowicie;
- Kontroler frontowy - jest to część, która odpowiada na żądania adresu URL i zwraca żądaną stronę. Ten kod trafi do kontrolera
- Model - jest to kod, który odpowiada na żądane dane i zwraca żądane dane. Ten kod trafi do modelu
- Widoki - to kod odpowiedzialny za formatowanie i wyświetlanie danych. Ten kod przejdzie do widoku
- Przejdź do folderu ciopinionpoll
- Otwórz plik database.php znajdujący się w katalogu application / config.
- Zlokalizuj następujące wiersze kodu
Ustawienia konfiguracji bazy danych
- Ustaw nazwę użytkownika na root
- Ustaw hasło na hasło głównego hosta lokalnego
- Nazwa bazy danych do opinii_pol. Zauważ, że będziemy używać bazy danych utworzonej w poprzedniej lekcji.
- Zapisz zmiany i zamknij plik.
Tworzenie naszego modelu
Następnie stworzymy nasz model, który rozszerzy CI_Model. CI_Model jest częścią bibliotek CodeIgniter. Model zostanie umieszczony w application / models Opinion_poll_model.php
load->database();}public function total_votes(){$query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');return $query->row()->choices_count;}public function get_results(){$libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow");$table_rows = '';for ($i = 1; $i < 5; $i++){$sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;";$result = $model->select($sql_stmt); $table_rows .= "";}public function add_vote($choice){$ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data);}}?> " . $ libraries [$i] . " Got: " . $result[0] . " votes
TUTAJ,
- „Class Opinion_poll_model extends CI_Model…” to nasz model, który rozszerza CI_Model
- „… Rodzic :: __construct ();” wywołuje konstruktora CI_Model
- „$ This-> load-> database ();” ładuje bibliotekę bazy danych, aby nasza aplikacja mogła współdziałać z bazą danych
- „$ This-> db->” to aktywny rekord CodeIgniter. Sprawdź to łącze, aby uzyskać więcej informacji na temat aktywnego rekordu.
Tworzenie naszego kontrolera Stwórzmy teraz kontroler. Użyjemy domyślnego kontrolera CodeIgniter znajdującego się w application / controllers / welcome.php. Zastąp jego kody źródłowe następującym kodem.
load->model('opinion_poll_model');}public function index() {if ($this->input->post('submitbutton') && !$this->input->post('vote')) {echo "";}if ($this->input->post('vote')) {$this->opinion_poll_model->add_vote($this->input->post('vote'));$data['total_votes'] = $this->opinion_poll_model->total_votes();$data['rows'] = $this->opinion_poll_model->get_results();$this->load->view('results', $data);} else {$this->load->view('opinion_poll_form');}}}/* End of file welcome.php *//* Location: ./application/controllers/welcome.php */?>
TUTAJ,
- „If (! Define ('BASEPATH')) exit ('Brak bezpośredniego dostępu do skryptu');” zapewnia, że użytkownicy nie mają bezpośredniego dostępu do klasy kontrolera
- „Class Welcome extends CI_Controller…” nasz kontroler rozszerza klasę CI_Controller
- „Funkcja publiczna __construct ()” wywołuje metodę konstruktora klasy CI_Controllera i ładuje nasz model Opinion_poll_model
- „Public function index ()…” to funkcja, która odwzorowuje plik index.php. używa klasy wejściowej CodeIgniter, aby sprawdzić, czy głos został wysłany, dodaje go do bazy danych, a następnie wyświetla wyniki. Jeśli tablica postów klasy wejściowej jest pusta, ładuje stronę głosowania.
- „$ This-> input-> post ('…')” to klasa wejściowa CodeIgniter, która pobiera zawartość zmiennej globalnej $ _POST.
- „$ This-> Opinion_poll_model-> add_vote ($ this-> input-> post ('vote'))” wywołuje metodę add_vote modelu, aby dodać głos do bazy danych.
Tworzenie naszych poglądów
Przypomnij sobie z poprzedniego przykładu, że mieliśmy dwie strony HTML, jedną do głosowania, a drugą do wyników. Będziemy używać tego samego kodu HTML z minimalnymi modyfikacjami do tworzenia naszych widoków. Utwórz następujące pliki w katalogu application / views
opinion_poll_form.phpJavaScript Libraries - Opinion Poll JavaScript Libraries - Opinion Poll
What is your favorite JavaScript Library?
Utwórzmy teraz stronę wyników results.php
JavaScript Libraries - Opinion Poll Results JavaScript Libraries - Opinion Poll Results
What is your favorite JavaScript Library?
people have thus far taken part in this poll:
Testowanie naszej aplikacji
Zakładając, że katalog główny twojej aplikacji to ciopinion, przejdź do http: // localhost / ciopionpoll /
Kliknij przycisk OK, zobaczysz następujący komunikat ostrzegawczy
Zagłosuj na swojego ulubionego kandydata, a następnie kliknij przycisk OK. Zostanie wyświetlona następująca strona wyników
Wniosek
CodeIgniter to łatwa do nauczenia się i używania frameworka PHP MVC, która może znacznie skrócić czas poświęcany na tworzenie aplikacji.
Podsumowanie
- Framework to zestaw bibliotek, które zapewniają częściową realizację typowych zadań.
- PHP ma wiele dojrzałych i przetestowanych frameworków MVC o otwartym kodzie źródłowym.
- Dobre podejście programistyczne oddziela dane od prezentacji i zachęca do korzystania z jednego punktu wejścia do aplikacji.
- Tradycyjne aplikacje PHP, które są zgodne z najlepszymi praktykami projektowania aplikacji, można przenosić do struktur MVC przy minimalnych modyfikacjach.