Tutorial PHP MVC Framework
⚡ Rezumat inteligent
Designul framework-ului PHP MVC separă datele aplicației și logica de business de prezentare, utilizând modele, vizualizări și controlere. CodeIgniter face acest model practic, permițând dezvoltatorilor PHP să construiască mai rapid aplicații web sigure și ușor de întreținut.
Ce este cadrul PHP MVC?
PHP MVC este un model de proiectare a aplicației care separă datele aplicației și logica de afaceri (modelul) de prezentare (vizualizare). MVC înseamnă Model, View & Controller.
Controlerul mediază între modele și vederi.
Gândiți-vă la modelul de design MVC ca la o mașină și la șofer.
Mașina are parbrize (vizualizare) pe care șoferul (controlorul) le folosește pentru a monitoriza traficul din față, apoi accelerează sau frânează (modelul) în funcție de ceea ce vede în față.
În continuare, să vedem de ce merită utilizat un framework construit pe acest model.
De ce să folosiți PHP MVC Framework?
Framework-urile PHP MVC simplifică lucrul cu tehnologii complexe prin:
- Ascunderea tuturor detaliilor complexe de implementare
- Furnizarea de metode standard pe care le putem folosi pentru a construi aplicațiile noastre
- Creșterea productivității dezvoltatorilor, deoarece implementările de bază ale unor activități precum conectarea la baza de date și curățarea datelor introduse de utilizatori sunt deja parțial implementate
- Încurajarea respectării standardelor profesionale de codare
Model de proiectare PHP MVC
Să discutăm acum pe scurt fiecare componentă a modelului de proiectare MVC.
Model – această parte se referă la logica afacerii și datele aplicației. Poate fi folosit pentru a efectua validări de date, a procesa date și a le stoca. Datele pot proveni de la;
- fișier plat
- Baza de date
- document XML
- Alte surse de date valide.
operator de date cu caracter personal, – aceasta este partea care se ocupă de cererile utilizatorului pentru resurse de la server.
De exemplu, atunci când utilizatorul solicită URL …/index.php?products=list, controlerul va încărca modelul de produse pentru a recupera datele despre produse, apoi va afișa rezultatele în vizualizarea listă.
Pe scurt, controlerul leagă modelele și vederile împreună în funcție de resursele solicitate.
Vizualizări – această parte se ocupă de prezentarea datelor către utilizator. Aceasta se face de obicei sub formă de pagini HTML.
Tipuri de framework PHP MVC
Selectarea celui mai bun cadru PHP este o provocare.
Nu trebuie să vă scrieți propriul cadru pentru a beneficia de avantajele MVC.
Ar trebui să încercați să vă creați propriul design de aplicație legat de MVC pentru a înțelege cum funcționează cadrele MVC.
Odată ce vă simțiți confortabil cu modul în care funcționează cadrele MVC, ar trebui să treceți la cadrele mature și deja testate.
Tabelul de mai jos descrie pe scurt câteva dintre framework-urile PHP populare și caracteristicile pe care le oferă fiecare framework.
| Cadru | Descriere |
|---|---|
|
|
Este unul dintre cele mai populare framework-uri PHP MVC, acum la a patra versiune majoră (CodeIgniter 4). Este ușor și are o curbă de învățare scurtă. Are un set bogat de biblioteci care ajută la construirea rapidă a site-urilor web și a aplicațiilor. De asemenea, îl pot folosi utilizatorii cu cunoștințe limitate de programare OOP. Aplicațiile construite cu CodeAprinzătorul include;
|
|
Este un framework ușor și sigur, de tip Hierarchical Model View Controller (HMVC). Notă: Kohana a fost oficial întrerupt în 2017; ultima sa versiune stabilă a fost 3.3.6 (iulie 2016). Furca comunitară Koseven și-a continuat baza de cod. Companiile care au folosit Kohana includ: |
|
Este modelat după Ruby on Rails și este întreținut activ (versiunea 5.x). Este cunoscut pentru concepte precum modele de proiectare software, convenții asupra configurării, ActiveRecord etc. CakePHP aplicațiile alimentate includ; |
|
|
Este un cadru puternic care este;
Este ideal pentru dezvoltareping aplicații de business. În 2020, Zend Framework a trecut la proiectul open source Laminas. Aplicațiile bazate pe Zend/Laminas includ:
Companiile care au utilizat framework-ul Zend includ:
|
Framework-ul PHP MVC vs. PHP simplu: Diferențe cheie
Ce schimbă de fapt un framework în practică? PHP-ul simplu îți oferă libertate completă, dar fiecare proiect ajunge să reinventeze rutarea, validarea și accesul la baza de date de la zero. Un framework PHP MVC standardizează aceste sarcini repetitive, astfel încât codul tău rămâne consistent în toate proiectele și echipele.
| Aspect | PHP simplu | Framework-ul PHP MVC |
|---|---|---|
| Code organizație | HTML, SQL și logică mixte în fișiere individuale | Separat în modele, vizualizări și controlere |
| Acces la baza de date | Interogări scrise de mână pe fiecare pagină | Constructor de interogări încorporat sau ORM cu legare de parametri |
| Securitate | Dezvoltatorul trebuie să țină cont de fiecare măsură de siguranță | Filtrare de intrare, protecție XSS și CSRF incluse |
| Mentenanță | Modificările se propagă imprevizibil prin fișiere | Fiecare strat se poate schimba independent |
👍 Sfat: Construiește mai întâi un mic proiect PHP simplu, precum sondajul de opinie de mai jos; dificultățile aduse de codul mixt fac evidentă valoarea separării MVC.
Portarea aplicației de sondaje de opinie către Codeigniter
În acest tutorial, am creat o aplicație de sondaje PHP. Aici, vom porta codul respectiv la Codeigniter
- Download ultima versiune de CodeAprinzător de la al lor site-ul web.
- ExtracTransferați conținutul fișierului arhivat în directorul de dezvoltare din directorul serverului web. Vom folosi ciopinionpoll ca nume de folder în această lecție.
- Navigați la URL http://localhost/ciopinionpoll/
CodePagina de bun venit a Igniter de mai sus confirmă că framework-ul este instalat corect. Acum vom porta aplicația noastră de sondaje de opinie la CodeIgniter. Reamintim că aplicația noastră a fost împărțită în trei componente majore, și anume;
- Controler frontal – aceasta este partea care răspunde la URL solicită și returnează pagina solicitată. Acest cod va intra în controler
- Model – acesta este codul care răspunde la solicitările de date și returnează datele solicitate. Acest cod va fi introdus în model
- Vizualizări – acesta este codul responsabil pentru formatarea și afișarea datelor. Acest cod va intra în vizualizare
Setări de configurare a bazei de date
Pentru a configura conexiunea la baza de date:
- Navigați la folderul ciopinionpoll
- Deschideți baza de date.php fișierul situat în directorul application/config.
- Localizați următoarele linii de cod
- Setați numele de utilizator la root
- Setați parola la parola de root localhost
- Setați numele bazei de date la opinion_poll. Rețineți că vom folosi baza de date creată în lecția anterioară.
- Salvați modificările și închideți fișierul.
Crearea modelului nostru
În continuare, vom crea modelul nostru care va extinde CI_Model. CI_Model face parte din CodeBibliotecile Igniter. Modelul va fi localizat în application/models opinie_sondaj_model.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);
}
}
?>
AICI,
- „clasa Opinion_poll_model extinde CI_Model...” este modelul nostru care extinde CI_Model
- „parent::__construct();” apelează constructorul CI_Model
- „$this->load->database();” încarcă biblioteca bazei de date, astfel încât aplicația noastră să poată interacționa cu baza de date
- „$this->db->” este CodeÎnregistrarea activă a lui Igniter. Verificați asta. legătură pentru mai multe informații despre înregistrarea activă.
Crearea controlerului nostru
Să creăm acum controlerul. Vom folosi setările implicite CodeControlerul Igniter se află în application/controllers/welcome.php. Înlocuiți codul său sursă cu următorul cod.
<?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 */
?>
AICI,
- „if (!defined('BASEPATH')) exit('Nu este permis accesul direct la script');” se asigură că utilizatorii nu accesează direct clasa de controler
- „clasa Bun venit extinde CI_Controller...” controlerul nostru extinde clasa CI_Controller
- „public function __construct()” apelează metoda constructorului de clasă a CI_Controller și încarcă modelul nostru Opinion_poll_model
- „public function index()…” este funcția care se mapează la index.php. Aceasta folosește CodeClasa de intrare a Igniter verifică dacă un vot a fost trimis, îl adaugă în baza de date și apoi afișează rezultatele. Dacă matricea post a clasei de intrare este goală, încarcă pagina de vot.
- „$this->input->post('…')” este CodeClasa de intrare Igniter care preia conținutul variabilei globale $_POST.
- „$this->opinion_poll_model->add_vote($this->input->post('vote'))” apelează metoda add_vote a modelului pentru a adăuga votul în baza de date.
Crearea vederilor noastre
Reamintim din exemplul anterior că aveam două pagini HTML, una pentru vot și cealaltă pentru rezultate. Vom folosi același cod HTML cu modificări minime pentru a crea view-urile noastre. Creați următoarele fișiere în directorul application/views
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>
Să creăm acum pagina de rezultate 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>
Testarea aplicației noastre
Presupunând că directorul rădăcină al aplicației dvs. este ciopinionpoll, navigați la http://localhost/ciopinionpoll/
Pagina de vot de mai sus provine din vizualizarea noastră opinion_poll_form. Faceți clic pe OK fără a selecta o opțiune și veți vedea următorul mesaj de alertă.
Votați pentru biblioteca preferată, apoi faceți clic pe OK. Veți vedea următoarea pagină cu rezultate
Aceasta confirmă că cele trei straturi funcționează împreună: controlerul a primit votul, modelul l-a stocat și l-a numărat, iar vizualizarea a afișat totalurile.









