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ářů.

Co je MVC?
MVC je zkratka pro Model-View-Controller. Jedná se o architektonický vzor, který rozděluje aplikaci na tři hlavní komponenty:
- Model se zabývá obchodní logikou a interakcemi s databází.
- Controller koordinuje aktivity mezi modelem a pohledem.
- 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.
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.


