Výukový program PHP MVC Framework
⚡ Chytré shrnutí
Návrh PHP MVC Frameworku odděluje aplikační data a obchodní logiku od prezentace pomocí modelů, pohledů a kontrolerů. CodeIgniter tento vzor činí praktickým a umožňuje vývojářům PHP rychleji vytvářet bezpečné a udržovatelné webové aplikace.
Co je PHP MVC framework?
PHP MVC je návrhový vzor aplikace, který odděluje data aplikace a obchodní logiku (model) od prezentace (zobrazení). MVC je zkratka pro Model, View & Controller.
Ovladač zprostředkovává mezi modely a pohledy.
Představte si designový vzor MVC jako auto a řidiče.
Auto má čelní skla (výhled), která řidič (řídicí jednotka) používá ke sledování provozu před sebou a poté zrychluje nebo brzdí (model) v závislosti na tom, co vidí před sebou.
Dále se podívejme, proč se vyplatí použít framework postavený na tomto vzoru.
Proč používat PHP MVC Framework?
Frameworky PHP MVC zjednodušují práci se složitými technologiemi tím, že:
- Skrytí všech složitých implementačních detailů
- Poskytování standardních metod, které můžeme použít k vývoji našich aplikací
- Zvýšení produktivity vývojářů, protože základní implementace aktivit, jako je připojení k databázi a sanitizace uživatelského vstupu, jsou již částečně implementovány.
- Podpora dodržování profesionálních kódovacích standardů
Návrhový vzor PHP MVC
Pojďme si nyní krátce probrat každou komponentu návrhového vzoru MVC.
Model – tato část se zabývá obchodní logikou a daty aplikace. Lze jej použít k ověřování dat, zpracování dat a jejich ukládání. Data mohou pocházet z;
- plochý pilník
- databáze
- XML dokument
- Jiné platné zdroje dat.
kontrolor – toto je část, která se zabývá požadavky uživatele na zdroje ze serveru.
Například když uživatel požádá o URL …/index.php?products=list, řídicí jednotka načte model produktů, aby načetla data o produktech, a poté zobrazí výsledky v seznamu.
Stručně řečeno, ovladač spojuje modely a pohledy dohromady v závislosti na požadovaných zdrojích.
Zobrazení – tato část se zabývá prezentací dat uživateli. Obvykle se jedná o HTML stránky.
Typy PHP MVC frameworku
Výběr nejlepšího PHP frameworku je výzva.
Nemusíte psát svůj vlastní rámec, abyste mohli těžit z výhod MVC.
Měli byste se pouze pokusit vytvořit vlastní návrh aplikace související s MVC, abyste pochopili, jak fungují rámce MVC.
Jakmile se seznámíte s tím, jak fungují rámce MVC, měli byste přejít na vyzrálé a již testované rámce.
Níže uvedená tabulka stručně popisuje některé populární PHP frameworky a funkce, které každý framework nabízí.
| Rámec | Description |
|---|---|
|
|
Je to jeden z nejpopulárnějších PHP MVC frameworků, nyní ve své čtvrté hlavní verzi (CodeIgniter 4). Je lehký a má krátkou křivku učení. Má bohatou sadu knihoven, které pomáhají rychle vytvářet webové stránky a aplikace. Mohou ho používat i uživatelé s omezenými znalostmi programování v objektově orientovaném programu (OOP). Aplikace vytvořené pomocí CodeZapalovač je součástí dodávky;
|
|
Jedná se o bezpečný a lehký framework s hierarchickým kontrolérem zobrazení modelu (HMVC). Poznámka: Kohana byla oficiálně ukončena v roce 2017; její poslední stabilní verze byla 3.3.6 (červenec 2016). Komunitní fork Koseven pokračoval v její kódové základně. Mezi společnosti, které používaly Kohanu, patří: |
|
Je modelován podle Ruby on Rails a je stále aktivně udržován (verze 5.x). Je známý pro koncepty jako softwarové návrhové vzory, konvence nad konfigurací, ActiveRecord atd. CakePHP poháněné aplikace zahrnují; |
|
|
Je to mocný rámec;
Je ideální pro vývojping obchodní aplikace. V roce 2020 přešel Zend Framework na open source projekt Laminas. Mezi aplikace založené na Zend/Laminas patří:
Mezi společnosti, které používaly framework Zend, patří:
|
PHP MVC Framework vs. prosté PHP: Klíčové rozdíly
Co framework v praxi vlastně mění? Obyčejné PHP vám dává naprostou svobodu, ale každý projekt nakonec znamená od základu nově vynalézané routing, validace a přístup k databázi. Framework PHP MVC tyto opakující se úkoly standardizuje, takže váš kód zůstává konzistentní napříč projekty a týmy.
| Vzhled | Prosté PHP | Framework PHP MVC |
|---|---|---|
| Code organizace | Smíšené HTML, SQL a logika v jednom souboru | Rozděleno na modely, pohledy a kontrolery |
| Přístup k databázi | Ručně psané dotazy na každé stránce | Vestavěný nástroj pro tvorbu dotazů nebo ORM s vazbou parametrů |
| Bezpečnost | Vývojář musí pamatovat na všechna bezpečnostní opatření | Včetně filtrování vstupu, ochrany XSS a CSRF |
| Údržba | Změny se nepředvídatelně šíří soubory | Každá vrstva se může měnit nezávisle |
👍 Tip: Nejprve si vytvořte jeden malý prostý PHP projekt, jako je ten níže uvedený průzkum veřejného mínění; nepříjemnosti spojené se smíšeným kódem jasně ukazují hodnotu MVC separace.
Přenesení aplikace pro průzkum veřejného mínění na CodeZapalovač
V tomto konzultace, vytvořili jsme PHP aplikaci pro hlasování. Zde tento kód přeneseme do CodeZapalovač
- Ke stažení nejnovější verze CodeZapalovač z jejich webová stránka.
- ExtracUložte obsah zazipovaného souboru do vývojového adresáře v adresáři webového serveru. V této lekci budeme jako název složky používat ciopinionpoll.
- Přejděte na URL http://localhost/ciopinionpoll/
Jedno CodeÚvodní stránka Igniter výše potvrzuje, že je framework správně nainstalován. Nyní portujeme naši aplikaci pro průzkum veřejného mínění na CodeZapalovač. Připomeňme si, že naše aplikace byla rozdělena do tří hlavních komponent, a to;
- Přední ovladač – to je část, která reaguje na URL požaduje a vrací požadovanou stránku. Tento kód se vloží do kontroleru.
- Model – jedná se o kód, který reaguje na požadavky na data a vrací požadovaná data. Tento kód se vloží do modelu.
- Pohledy – toto je kód zodpovědný za formátování a zobrazování dat. Tento kód přejde do zobrazení
Nastavení konfigurace databáze
Konfigurace připojení k databázi:
- Přejděte do složky ciopinionpoll.
- Otevřete databáze.php soubor umístěný v adresáři application/config.
- Vyhledejte následující řádky kódu
- Nastavte uživatelské jméno na root
- Nastavte heslo na heslo root uživatele localhost
- Nastavte název databáze na opinion_poll. Všimněte si, že budeme používat databázi vytvořenou v předchozí lekci.
- Uložte změny a zavřete soubor.
Vytváření našeho modelu
Dále vytvoříme náš model, který rozšíří CI_Model. CI_Model je součástí CodeKnihovny Igniter. Model bude umístěn v adresáři application/models. názor_model_modelu.php
<?php
class Opinion_poll_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->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++)
{
$query = $this->db->select('COUNT(choice) as choices_count')
->where('choice', $i)
->get('js_libraries');
$table_rows .= "<tr><td>" . $libraries[$i] . " Got:</td><td><b>" . $query->row()->choices_count . "</b> votes</td></tr>";
}
return $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);
}
}
?>
TADY,
- „class Opinion_poll_model rozšiřuje CI_Model…“ je náš model, který rozšiřuje CI_Model
- „parent::__construct();“ volá konstruktor CI_Model
- “$this->load->database();” načte databázovou knihovnu, aby naše aplikace mohla s databází spolupracovat
- „$this->db->“ je CodeAktivní záznam zapalovače. Zkontrolujte toto. https://trials.autocruitment.com pro více informací o aktivním záznamu.
Vytvoření našeho kontroleru
Nyní si vytvořme kontroler. Použijeme výchozí CodeŘídicí jednotka zapalovače se nachází v souboru application/controllers/welcome.php. Nahraďte její zdrojový kód následujícím kódem.
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('opinion_poll_model');
}
public function index() {
if ($this->input->post('submitbutton') && !$this->input->post('vote')) {
echo "<script>alert('You did not vote!');</script>";
}
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 */
?>
TADY,
- “if (!defined('BASEPATH')) exit('Není povolen přímý přístup pomocí skriptu');“ zajišťuje, že uživatelé nemají přímý přístup ke třídě kontroléru
- „class Welcome rozšiřuje CI_Controller…“ náš kontrolér rozšiřuje třídu CI_Controller
- „Public function __construct()“ volá metodu konstruktoru třídy CI_Controller a načítá náš model Opinion_poll_model
- „public function index()…“ je funkce, která se mapuje na index.php. Používá CodeVstupní třída Igniteru pro kontrolu, zda byl odeslán hlas, jeho přidání do databáze a zobrazení výsledků. Pokud je pole post vstupní třídy prázdné, načte se stránka pro hlasování.
- „$this->input->post('…')“ je CodeVstupní třída Igniter, která načítá obsah globální proměnné $_POST.
- “$this->opinion_poll_model->add_vote($this->input->post('vote'))” volá metodu add_vote modelu pro přidání hlasu do databáze.
Vytváření našich pohledů
Vzpomeňte si z předchozího příkladu, že jsme měli dvě HTML stránky, jednu pro hlasování a druhou pro výsledky. Pro vytvoření našich zobrazení použijeme stejný HTML kód s minimálními úpravami. V adresáři application/views vytvořte následující soubory.
opinion_poll_form.php
<html>
<head>
<title>
JavaScript Libraries - Opinion Poll
</title>
</head>
<body>
<h2>JavaScript Libraries - Opinion Poll</h2>
<p><b>What is your favorite JavaScript Library?</b></p>
<form method="POST" action="index.php">
<p>
<input type="radio" name="vote" value="1" /> JQuery
<br />
<input type="radio" name="vote" value="2" /> MooTools
<br />
<input type="radio" name="vote" value="3" /> YUI Library
<br />
<input type="radio" name="vote" value="4" /> Glow </p>
<p>
<input type="submit" name="submitbutton" value="OK" />
</p>
</form>
</body>
</html>
Nyní vytvoříme stránku výsledků results.php
<html>
<head>
<title>JavaScript Libraries - Opinion Poll Results</title>
</head>
<body>
<h2>JavaScript Libraries - Opinion Poll Results</h2>
<p><b>What is your favorite JavaScript Library?</b></p>
<p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p>
<p><table><tr><td>
<?php print($rows); ?>
</tr></td></table></p>
<p><a href="#">Return to voting page</a></p>
</body>
</html>
Testování naší aplikace
Za předpokladu, že kořenový adresář vaší aplikace je ciopinionpoll, přejděte do http://localhost/ciopinionpoll/
Výše uvedená stránka pro hlasování pochází z našeho zobrazení opinion_poll_form. Klikněte na OK bez výběru možnosti a zobrazí se vám následující upozornění.
Hlasujte pro svou oblíbenou knihovnu a poté klikněte na OK. Zobrazí se vám následující stránka s výsledky.
To potvrzuje, že tři vrstvy spolupracují: kontroler hlas přijal, model jej uložil a spočítal a zobrazení zobrazilo součty.









