Framework CodeIgniter MVC (Model View Controller) s příkladem

Co je MVC?

Standardy MVC pro Model-View-Control. Jedná se o architektonický vzor, ​​který rozděluje aplikaci na tři hlavní součásti.

1. Model se zabývá obchodní logikou a databázovými interakcemi

2. Kontrolér koordinuje aktivity mezi modelem a pohledem

3. Zobrazení je odpovědné za prezentaci dat

Následují některé z výhod architektonického vzoru MVC

  • Volná spojka - komponenty existují a fungují nezávisle na sobě.
  • Flexibilita – lze snadno provádět změny jednotlivých komponent
  • Zvýšená produktivita – na projektu může pracovat více lidí současně. Vývojáři front-endu mohou pracovat na pohledech a prezentaci, zatímco vývojáři backendu se mohou soustředit na modely, a protože je systém volně propojený, funguje na konci dne.

Model

Model je zodpovědný za interakci se zdroji dat. Obvykle se jedná o databázi, ale může to být i služba, která poskytuje požadovaná data. Je také běžnou praxí mít obchodní logiku obsaženou v modelech na rozdíl od řadiče. Tato praxe se obvykle nazývá tlustý model hubený ovladač.

Model obvykle zapisuje data do databáze, poskytuje mechanismus pro editaci a aktualizaci a mazání dat. V moderní webové aplikaci modely využívají návrhové vzory přístupu k datům, jako je aktivní záznam, aby se usnadnila interakce s databází.

Například CodeIgniter používá k podpoře modelů vestavěnou knihovnu Active Record, zatímco jiné rámce, jako je Laravel, používají Eloquent Object Relational Mapper (ORM), který usnadňuje přístup k datům.

kontrolor

Řadič naslouchá příchozím požadavkům na zdroje od uživatelů. Funguje jako prostředník mezi modelem a pohledem a občas také implementuje některá obchodní pravidla. Řekněme, že kontrolér obdrží požadavek na registraci uživatele do databáze.

Správce může provést ověření údajů o tom, co bylo předloženo, aby se ujistil, že byly předloženy všechny požadované parametry. Pokud něco chybí, uživatel je přesměrován na registrační stránku s příslušnou chybovou zprávou. Správce může také požádat model, aby provedl další ověření ověřením, zda zadaná e-mailová adresa již existuje. Pokud všechna ověřovací pravidla projdou, správce odešle data modelu ke zpracování a čeká na odpověď.

Jakmile model zpracuje informace a vrátí kladnou odpověď, řídicí jednotka načte příslušný pohled a předá data vrácená z modelu jako parametr.

Zobrazit

Pohled se zabývá daty prezentovanými koncovému uživateli. Ve webových aplikacích pohledy často obsahují HTML, CSS a volitelně JavaScénář. Pohledy obsahují minimální programovací kód. Kód obsažený v pohledech se obvykle používá k procházení kolekcí dat přijatých jako parametry z modelu nebo pomocné funkce pro čištění dat nebo vytváření odkazů pro úpravu záznamů. Většina moderních webových aplikací obvykle používá šablonovací motory, které definují svou vlastní syntaxi, která je spíše pseudokódem a návrháři ji mohou snadno pochopit. Při práci s CodeIgniter je běžnou praxí používat krátké PHP tagy a řídicí struktury. Chcete-li něco zobrazit v CodeIgniter, můžete použít následující kód

<?=$title?>

Naproti tomu

<?php
echo $title;
?>

Řídicí struktury jsou obvykle psány následovně

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

Jak můžete vidět z výše uvedeného příkladu, pohled bude používat kombinaci PHP a HTML místo toho, aby vše uzavřelo do čistého kódu PHP.

Jak fungují rámce MVC?

Následující obrázek ukazuje, jak funguje framework MVC

MVC Frameworks fungují

Kontrolér obdrží požadavek od uživatele, v případě potřeby interaguje s databázovým modelem a poté vrátí výsledek zpět do prohlížeče ve formě HTML kódu, který prohlížeč interpretuje do formátu čitelného člověkem a zobrazí uživateli.

Ovladač CodeIgniter

Pojďme si nyní rozebrat, co se právě stalo, když jsme načetli výše uvedenou adresu URL do webového prohlížeče.

Otevřete soubor Welcome.php controller umístěný application/controllers

Měli byste vidět následující kód

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}

TADY,

  • define('BASEPATH') OR exit('Není povolen přímý přístup pomocí skriptu'); zabrání přímému přístupu k řadiči, pokud požadavek nepřišel přes index.php. je to z bezpečnostních důvodů.
  • třída Welcome rozšiřuje CI_Controller {…} definuje třídu Welcome controller a rozšiřuje nadřazenou třídu CI_Controller
  • public function index(){…} definuje metodu indexu, která odpovídá URL http://localhost:3000
    • $this->load->view('welcome_message'); načte pohled welcome_message, který se nachází v adresáři application/views

Nyní aktualizujeme metodu indexu následovně

public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}

TADY,

  • $this->load->model('customers_model'); načte model zákazníků.
  • $data['customer'] = $this->customers_model->get_customer(3); volá metodu get_customer customer_model a předává parametr 3. V tomto příkladu jsme hodnotu pevně zakódovali, ale v reálných aplikacích by to byl parametr z URI.
  • $this->load->view('welcome_message',$data); načte pohled welcome_message a předá do pohledu proměnnou $data

Model CodeIgniter

Pojďme nyní vytvořit pohled, na který jsme odkazovali ve výše uvedeném kódu. Pro zjednodušení náš model nebude interagovat s databáze ale vrátí statický záznam zákazníka. S databázemi budeme pracovat v dalších tutoriálech.

Vytvořte soubor Customers_model.php v aplikaci/modely

Přidejte následující kód

<?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;
}
}

TADY,

  • třída Customers_model rozšiřuje CI_Model {…} definuje model Customers_model, který rozšiřuje CI_Model.
  • veřejná funkce get_customer($id) {…} definuje metodu získání zákazníka na základě ID zákazníka
  • $data[…] definuje statické hodnoty našeho fiktivního zákazníka. Měl by to být řádek vrácený z databáze.
  • return $data; vrátí údaje o zákazníkovi.

Tedy pro náš model. Nyní upravíme zobrazení uvítací_zprávy

Otevřete soubor welcome_message.php umístěný v

application/views/welcome_message.php

Nahraďte kód následujícím

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

Uložte změny

Načtěte následující URL do webového prohlížeče

http://localhost:3000/

Měli byste vidět zákaznickou kartu, jak je znázorněno na obrázku níže

Model CodeIgniter

Shrnutí

  • MVC je architektonický vzor, ​​který rozděluje aplikaci na tři hlavní součásti
  • Model je zodpovědný za interakci se zdroji dat
  • Řadič naslouchá příchozím požadavkům na zdroje od uživatelů
  • Ve webových aplikacích pohledy často obsahují HTML, CSS a volitelně JavaScénář
  • Řadič obdrží požadavek od uživatele, v případě potřeby interaguje s databázovým modelem a poté vrátí výsledek zpět do prohlížeče ve formě HTML kódu