CodePrzykład frameworka Igniter MVC (Model View Controller)
⚡ Inteligentne podsumowanie
CodePlatforma Igniter MVC dzieli aplikację na model, widok i kontroler. Model obsługuje dane i logikę biznesową, kontroler koordynuje żądania, a widok prezentuje wynik, zapewniając luźne powiązanie, elastyczność i wyższą produktywność programistów.
Co to jest MVC?
MVC to skrót od Model-View-Controller. Jest to wzorzec architektoniczny, który dzieli aplikację na trzy główne komponenty:
- Model zajmuje się logiką biznesową i interakcjami z bazą danych.
- Kontroler koordynuje działania pomiędzy modelem i widokiem.
- Widok odpowiada za prezentację danych.
Oto niektóre zalety wzorca architektonicznego MVC:
- Luźne sprzężenie – komponenty istnieją i działają niezależnie od siebie.
- Elastyczność – możesz łatwo wprowadzać zmiany w poszczególnych komponentach.
- Większa produktywność – nad projektem może pracować jednocześnie więcej niż jedna osoba. Programiści front-end mogą pracować nad widokami i prezentacją, podczas gdy programiści back-end koncentrują się na modelach. Ponieważ system jest luźno powiązany, ostatecznie wszystko działa razem.
Model
Model odpowiada za interakcję ze źródłami danych. Zazwyczaj jest to baza danych, ale może to być również usługa dostarczająca żądane dane. Powszechną praktyką jest również przechowywanie logiki biznesowej w modelach, a nie w kontrolerze. Praktyka ta jest zazwyczaj określana jako „gruby model, chudy kontroler”.
Model zazwyczaj zapisuje dane w bazie danych i zapewnia mechanizm edycji, aktualizacji i usuwania danych. W nowoczesnych aplikacjach internetowych modele wykorzystują wzorce projektowe dostępu do danych, takie jak Active Record, aby ułatwić interakcję z bazą danych.
Na przykład, CodeIgniter wykorzystuje wbudowaną bibliotekę Active Record do wspomagania modeli, podczas gdy inne struktury, takie jak Laravel, używają Eloquent Object Relational Mapper (ORM) do uzyskiwania dostępu do danych.
kontroler
Kontroler nasłuchuje przychodzących żądań zasobów od użytkowników. Działa jako pośrednik między modelem a widokiem, a czasami również implementuje pewne reguły biznesowe. Załóżmy, że kontroler otrzymuje żądanie zarejestrowania użytkownika w bazie danych.
Kontroler może przeprowadzić walidację przesłanych danych, aby upewnić się, że wszystkie wymagane parametry są obecne. Jeśli czegoś brakuje, użytkownik jest przekierowywany na stronę rejestracji z odpowiednim komunikatem o błędzie. Kontroler może również poprosić model o przeprowadzenie dalszej walidacji, na przykład sprawdzenie, czy przesłany adres e-mail już istnieje. Jeśli wszystkie reguły walidacji zakończą się powodzeniem, kontroler przesyła dane do modelu w celu przetworzenia i oczekuje na odpowiedź.
Gdy model przetworzy informacje i zwróci pozytywną odpowiedź, kontroler ładuje odpowiedni widok i przekazuje dane zwrócone z modelu jako parametr.
Zobacz
Widok dotyczy danych prezentowanych użytkownikowi końcowemu. W aplikacjach internetowych widoki często zawierają HTML, CSS i opcjonalnie JAVASCRIPTWidoki zawierają minimalną ilość kodu programistycznego, zazwyczaj wystarczającą do przeglądania zbiorów danych otrzymanych z modelu, lub funkcję pomocniczą do czyszczenia danych lub tworzenia linków edycyjnych. Większość współczesnych aplikacji internetowych korzysta z silników szablonów z własną, podobną do pseudokodu składnią, zrozumiałą dla projektantów. Podczas pracy z CodeW Igniterze powszechną praktyką jest używanie krótkich tagów PHP i struktur sterujących. Aby wyświetlić coś w CodeIgniter, możesz użyć następującego kodu:
<?=$title?>
W przeciwieństwie do:
<?php
echo $title;
?>
Struktury sterujące są zazwyczaj zapisywane w następujący sposób:
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?></p> </li> <?php endforeach; ?>
Jak widać na powyższym przykładzie, widok wykorzystuje kombinację PHP i HTML zamiast zamykać wszystko w czystym kodzie PHP.
Jak działają frameworki MVC
Poniższy obraz pokazuje, jak działa framework MVC.
Kontroler odbiera żądanie od użytkownika, w razie potrzeby wchodzi w interakcję z modelem bazy danych, a następnie zwraca wynik do przeglądarki w formie kodu HTML, który przeglądarka interpretuje do formatu czytelnego dla człowieka i wyświetla użytkownikowi.
CodeKontroler zapłonu
Przyjrzyjmy się teraz temu, co się stało, gdy załadowaliśmy URL do przeglądarki internetowej. Otwórz plik Welcome.php kontroler znajdujący się w folderze application/controllers. Powinieneś zobaczyć następujący kod:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
Tutaj:
- defined('BASEPATH') OR exit('Bezpośredni dostęp do skryptu nie jest dozwolony'); uniemożliwia bezpośredni dostęp do kontrolera, jeśli żądanie nie zostało przesłane przez index.php. Ma to na celu zapewnienie bezpieczeństwa.
- Klasa Welcome rozszerza CI_Controller {…} definiuje klasę kontrolera Welcome i rozszerza klasę nadrzędną CI_Controller.
- publiczna funkcja index(){…} definiuje metodę index, która odpowiada na URL
http://localhost:3000. - $this->load->view('welcome_message'); ładuje widok welcome_message znajdujący się w katalogu application/views.
Teraz zaktualizujemy metodę index w następujący sposób:
public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}
Tutaj:
- $this->load->model('customers_model'); ładuje model klienta.
- $data['customer'] = $this->customers_model->get_customer(3); wywołuje metodę get_customer klasy customers_model i przekazuje parametr 3. W tym przykładzie wartość została zakodowana na stałe, ale w rzeczywistych aplikacjach byłby to parametr z identyfikatora URI.
- $this->load->view('welcome_message',$data); ładuje widok welcome_message i przekazuje zmienną $data.
CodeModel zapłonnika
Utwórzmy teraz model, do którego odwołuje się powyższy kod. Dla uproszczenia nasz model nie będzie wchodził w interakcję z baza danych ale zwróci statyczny rekord klienta. W kolejnych samouczkach zajmiemy się bazami danych. Utwórz plik Customers_model.php w katalogu application/models i dodaj następujący kod:
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
Tutaj:
- klasa Customers_model rozszerza CI_Model {…} definiuje model Customers_model, który rozszerza CI_Model.
- publiczna funkcja get_customer($id) {…} definiuje metodę get_customer na podstawie identyfikatora klienta.
- $data[…] definiuje wartości statyczne naszego fikcyjnego klienta. Powinien to być wiersz zwrócony z bazy danych.
- zwróć dane $; zwraca dane klienta.
To wszystko w naszym modelu. Zmodyfikujmy teraz widok welcome_message. Otwórz plik welcome_message.php znajdujący się w:
application/views/welcome_message.php
Zastąp kod następującym:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h1>Customer Details Card</h1> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
Zapisz zmiany i załaduj następujące dane URL w przeglądarce internetowej: http://localhost:3000/Powinieneś zobaczyć kartę klienta, tak jak pokazano na obrazku poniżej.



