CodePříklad frameworku Igniter MVC (Model View Controller)

⚡ Chytré shrnutí

CodeFramework Igniter MVC rozděluje aplikaci na model, zobrazení a kontroler. Model zpracovává data a obchodní logiku, kontroler koordinuje požadavky a zobrazení prezentuje výsledek, což poskytuje volné propojení, flexibilitu a vyšší produktivitu vývojářů.

  • 🏗️ Základní vzor: MVC rozděluje aplikaci na komponenty modelu, pohledu a kontroleru.
  • 💾 Model: Interaguje se zdrojem dat a uchovává obchodní logiku, často prostřednictvím služby Active Record.
  • 🎛️ Ovladač: Naslouchá požadavkům, ověřuje vstup a koordinuje model a zobrazení.
  • Pohled: Prezentuje data jako HTML, CSS a minimální PHP, bez složité logiky.
  • 🔗 Volné spojení: Komponenty fungují nezávisle, takže práce na front-endu a back-endu může probíhat paralelně.
  • Krátké štítky: CodePohledy Igniter běžně používají krátké PHP echo tagy pro čistší šablony.
  • 🔁 Tok požadavku: Z kontroléru do modelu pro zobrazení a poté HTML zpět do prohlížeče.

CodeFramework MVC Igniter

Co je MVC?

MVC je zkratka pro Model-View-Controller. Jedná se o architektonický vzor, ​​který rozděluje aplikaci na tři hlavní komponenty:

  1. Model se zabývá obchodní logikou a interakcemi s databází.
  2. Controller koordinuje aktivity mezi modelem a pohledem.
  3. Zobrazení je zodpovědné za prezentaci dat.

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

  • Volná vazba – komponenty existují a fungují nezávisle na sobě.
  • Flexibilita – můžete snadno provádět změny na jednotlivých komponentách.
  • Zvýšená produktivita – na projektu může pracovat více než jedna osoba současně. Front-end vývojáři mohou pracovat na pohledech a prezentacích, zatímco back-end vývojáři se zaměřují na modely, a protože je systém volně propojený, nakonec vše funguje společně.

Model

Model je zodpovědný za interakci se zdroji dat. Obvykle se jedná o databázi, ale může to být také služba, která poskytuje požadovaná data. Běžnou praxí je také ponechat obchodní logiku v modelech, nikoli v kontroleru. Tato praxe se obvykle nazývá „tlustý model, tenký kontroler“.

Model obvykle zapisuje data do databáze a poskytuje mechanismus pro úpravu, aktualizaci a mazání dat. V moderní webové aplikaci modely používají návrhové vzory pro přístup k datům, jako je Active Record, aby se usnadnila interakce s databází.

Například, CodeIgniter používá k podpoře modelů vestavěnou knihovnu Active Record, zatímco jiné frameworky, jako například Laravel, používají pro přístup k datům Eloquent Object Relational Mapper (ORM).

kontrolor

Kontroler naslouchá příchozím požadavkům na zdroje od uživatelů. Funguje jako prostředník mezi modelem a zobrazením a občas implementuje i některá obchodní pravidla. Předpokládejme, že kontroler obdrží požadavek na registraci uživatele v databázi.

Správce může provést ověření dat odeslaných dat, aby se ujistil, že jsou přítomny všechny požadované parametry. Pokud něco chybí, je uživatel přesměrován na registrační stránku s příslušnou chybovou zprávou. Správce může také požádat model o provedení dalšího ověření, například o kontrolu, zda odeslaná e-mailová adresa již existuje. Pokud všechna ověřovací pravidla projdou úspěšně, 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, obvykle jen tolik, aby procházel kolekcemi dat přijatých z modelu, nebo pomocnou funkci pro čištění dat či vytváření odkazů pro úpravy. Většina moderních webových aplikací používá šablonovací enginy s vlastní syntaxí podobnou pseudokódu, které návrháři rozumí. Při práci s CodeV Igniteru je běžnou praxí používat krátké PHP tagy a řídicí struktury. Pro zobrazení něčeho v CodeIgniter, můžete použít následující kód:

<?=$title?>

Na rozdíl od:

<?php
echo $title;
?>

Řídicí struktury se obvykle zapisují takto:

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

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

Jak fungují MVC frameworky

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

Jak funguje framework MVC

Kontroler přijme požadavek od uživatele, v případě potřeby interaguje s modelem databáze a poté vrátí výsledek do prohlížeče ve formě HTML kódu, který prohlížeč interpretuje do formátu čitelného pro člověka a zobrazí uživateli.

CodeŘídicí jednotka zapalovače

Pojďme si nyní rozebrat, co se stalo, když jsme naložili URL do webového prohlížeče. Otevřete soubor Welcome.php controller, který se nachází v adresáři 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');
}
}

Zde:

  • defined('BASEPATH') OR exit('Není povolen přímý přístup ke skriptu'); zabrání přímému přístupu k řadiči, pokud požadavek nepřišel přes index.php. Toto je z bezpečnostních důvodů.
  • třída Welcome extends CI_Controller {…} definuje třídu kontroleru Welcome a rozšiřuje nadřazenou třídu CI_Controller.
  • Veřejná funkce index(){…} definuje indexovací metodu, která reaguje na URL http://localhost:3000.
  • $this->load->view('welcome_message'); načte zobrazení welcome_message umístěné v adresáři application/views.

Nyní aktualizujeme metodu indexování takto:

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

Zde:

  • $this->load->model('customers_model'); načte model zákazníků.
  • $data['customer'] = $this->customers_model->get_customer(3); volá metodu get_customer modelu customers_model a předá parametr 3. V tomto příkladu máme hodnotu pevně zakódovanou, ale v reálných aplikacích by se jednalo o parametr z URI.
  • $this->load->view('welcome_message',$data); načte zobrazení welcome_message a předá proměnnou $data.

CodeModel zapalovače

Nyní si vytvořme model, na který se odkazuje 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. V dalších tutoriálech budeme pracovat s databázemi. Vytvořte soubor Customers_model.php v application/models a přidejte do něj 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;
}
}

Zde:

  • 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 get_customer na základě ID zákazníka.
  • $data[…] definuje statické hodnoty našeho fiktivního zákazníka. Měl by se jednat o řádek vrácený z databáze.
  • return $data; vrátí údaje o zákazníkovi.

To je pro náš model vše. Nyní upravme zobrazení welcome_message. Otevřete soubor welcome_message.php, který se nachází 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 a načtěte následující URL ve webovém prohlížeči: http://localhost:3000/Měli byste vidět kartu zákazníka, jak je znázorněno na obrázku níže.

Karta s údaji o zákazníkovi vygenerovaná uživatelem CodeZapalovač

Nejčastější dotazy

Znamená to, že obchodní logika žije v modelu,ping Řadič je tenký a zaměřený na směrovací požadavky. Díky tomu je logika opakovaně použitelná a řadič se snáze čitelnější a testovatelnější.

Pohled by měl zobrazovat pouze data.ping Logika odděluje záležitosti, takže návrháři mohou upravovat rozvržení bez dotýkání se obchodních pravidel a stejná data lze zobrazit v různých pohledech.

Active Record je vestavěný nástroj pro tvorbu dotazů, který umožňuje modelům číst a zapisovat do databáze pomocí volání metod namísto surového SQL. Pomáhá také předcházet SQL injection pomocí esca.ping hodnoty.

Umělá inteligence dokáže z popisu funkce generovat odpovídající soubory řadičů, modelů a zobrazení a zároveň zachovat konzistenci pojmenování. Revzobrazit vygenerované dotazy a ověřit je před jejich spuštěním.

Krátký tag echo je kompaktní způsob, jak vypsat hodnotu v zobrazení. Celý blok tagu PHP se používá pro příkazy a řídicí struktury. Oba jsou ekvivalentní pro výstup, ale krátké tagy udržují zobrazení v pořádku.

Shrňte tento příspěvek takto: