CodeEsempio del framework Igniter MVC (Model View Controller)

⚡ Riepilogo intelligente

CodeIl framework Igniter MVC suddivide un'applicazione in Model, View e Controller. Il modello gestisce i dati e la logica di business, il controller coordina le richieste e la vista presenta il risultato, garantendo un accoppiamento debole, flessibilità e una maggiore produttività degli sviluppatori.

  • ???? ️ Schema centrale: Il modello MVC suddivide un'applicazione in componenti: modello, vista e controller.
  • 💾 Modello: Interagisce con l'origine dati e contiene la logica di business, spesso tramite Active Record.
  • ️ controller: Ascolta le richieste, convalida gli input e coordina il modello e la vista.
  • ️ Vista: Presenta i dati in formato HTML, CSS e PHP minimale, senza logica complessa.
  • 🔗 Accoppiamento lasco: I componenti funzionano in modo indipendente, quindi il lavoro di front-end e back-end possono essere eseguiti in parallelo.
  • ⚡ Tag brevi: CodeLe viste Igniter utilizzano comunemente tag echo PHP brevi per modelli più puliti.
  • 🔁 Flusso della richiesta: Dal controller al modello, poi alla vista e infine al codice HTML, il tutto viene inviato nuovamente al browser.

CodeFramework Igniter MVC

Che cos'è MVC?

MVC è l'acronimo di Model-View-Controller. Si tratta di un modello architetturale che suddivide l'applicazione in tre componenti principali:

  1. Il modello si occupa della logica aziendale e delle interazioni con il database.
  2. Il controller coordina le attività tra il modello e la vista.
  3. La vista è responsabile della presentazione dei dati.

Di seguito sono elencati alcuni dei vantaggi del modello architetturale MVC:

  • Accoppiamento debole: i componenti esistono e funzionano indipendentemente l'uno dall'altro.
  • Flessibilità: è possibile apportare facilmente modifiche ai singoli componenti.
  • Maggiore produttività: più persone possono lavorare al progetto contemporaneamente. Gli sviluppatori front-end possono concentrarsi su interfacce e presentazione, mentre gli sviluppatori back-end si dedicano ai modelli e, grazie al disaccoppiamento del sistema, tutto funziona in modo integrato.

Modello

Il modello è responsabile dell'interazione con le fonti di dati. Solitamente si tratta di un database, ma può anche essere un servizio che fornisce i dati richiesti. È inoltre prassi comune mantenere la logica di business nei modelli anziché nel controller. Questa pratica viene solitamente definita "modello grasso, controller snello".

Il modello in genere scrive i dati nel database e fornisce un meccanismo per la modifica, l'aggiornamento e la cancellazione dei dati. Nelle moderne applicazioni web, i modelli utilizzano modelli di progettazione per l'accesso ai dati, come Active Record, per semplificare l'interazione con il database.

Per esempio, CodeIgniter utilizza una libreria Active Record integrata per supportare i modelli, mentre altri framework come Laravel utilizzano Eloquent Object Relational Mapper (ORM) per l'accesso ai dati.

Controller

Il controller è in ascolto delle richieste di risorse provenienti dagli utenti. Funge da intermediario tra il modello e la vista e, a volte, implementa anche alcune regole aziendali. Supponiamo che il controller riceva una richiesta di registrazione di un utente nel database.

Il controller può eseguire la convalida dei dati inviati per assicurarsi che tutti i parametri richiesti siano presenti. Se manca qualcosa, l'utente viene reindirizzato alla pagina di registrazione con un messaggio di errore appropriato. Il controller può anche richiedere al modello di eseguire ulteriori convalide, come ad esempio verificare se l'indirizzo email inviato esiste già. Se tutte le regole di convalida hanno esito positivo, il controller invia i dati al modello per l'elaborazione e attende la risposta.

Una volta che il modello ha elaborato le informazioni e ha restituito una risposta positiva, il controller carica la vista appropriata e passa i dati restituiti dal modello come parametro.

Visualizzare

La vista si occupa dei dati presentati all'utente finale. Nelle applicazioni Web, le visualizzazioni spesso contengono HTML, CSS e facoltativamente JavaCopioneLe viste contengono un codice di programmazione minimo, di solito sufficiente solo per scorrere le raccolte di dati ricevute dal modello, o una funzione di supporto per la pulizia dei dati o la creazione di link di modifica. La maggior parte delle applicazioni web moderne utilizza motori di template con una propria sintassi simile allo pseudocodice che i progettisti possono comprendere. Quando si lavora con CodeIn Igniter, è prassi comune utilizzare tag PHP brevi e strutture di controllo. Per visualizzare qualcosa in CodeIgniter, potresti utilizzare il seguente codice:

<?=$title?>

Al contrario di:

<?php
echo $title;
?>

Le strutture di controllo vengono generalmente scritte nel modo seguente:

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

Come puoi vedere dall'esempio sopra, la vista utilizza una combinazione di PHP e HTML invece di racchiudere tutto nel puro codice PHP.

Come funzionano i framework MVC

L'immagine seguente mostra come funziona il framework MVC.

Come funziona il framework MVC

Un controller riceve la richiesta dall'utente, interagisce con il modello del database se necessario, quindi restituisce il risultato al browser sotto forma di codice HTML, che il browser interpreta in un formato leggibile dall'uomo e visualizza all'utente.

CodeControllore di accensione

Analizziamo ora cosa è successo quando abbiamo caricato il URL Accedi al browser web. Apri il file Welcome.php controller che si trova nella cartella application/controllers. Dovresti visualizzare il seguente codice:

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

Qui:

  • defined('BASEPATH') OR exit('No direct script access allowed'); impedisce l'accesso diretto al controller se la richiesta non è arrivata tramite index.php. Questo per motivi di sicurezza.
  • La classe Welcome estende CI_Controller {…} definisce la classe controller Welcome ed estende la classe padre CI_Controller.
  • la funzione pubblica index(){…} definisce il metodo index che risponde a URL http://localhost:3000.
  • $this->load->view('welcome_message'); carica la vista welcome_message situata nella directory application/views.

Aggiorneremo ora il metodo index come segue:

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

Qui:

  • $this->load->model('customers_model'); carica il modello dei clienti.
  • $data['customer'] = $this->customers_model->get_customer(3); chiama il metodo get_customer di customers_model e passa il parametro 3. In questo esempio abbiamo codificato il valore in modo statico, ma nelle applicazioni reali questo sarebbe un parametro dall'URI.
  • $this->load->view('welcome_message',$data); carica la vista welcome_message e passa la variabile $data.

CodeModello di accenditore

Creiamo ora il modello a cui si fa riferimento nel codice sopra. Per semplicità, il nostro modello non interagirà con il banca dati ma restituirà un record cliente statico. Lavoreremo con i database nei prossimi tutorial. Crea un file Customers_model.php nella cartella application/models e aggiungi il seguente codice:

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

Qui:

  • class Customers_model extends CI_Model {…} definisce il modello Customers_model che estende CI_Model.
  • La funzione pubblica get_customer($id) {…} definisce il metodo get_customer in base a un ID cliente.
  • $data[…] definisce i valori statici del nostro cliente fittizio. Dovrebbe trattarsi di una riga restituita dal database.
  • restituire $dati; restituisce i dati del cliente.

Questo è tutto per il nostro modello. Modifichiamo ora la vista welcome_message. Apri welcome_message.php che si trova in:

application/views/welcome_message.php

Sostituisci il codice con il seguente:

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

Salva le modifiche e carica quanto segue URL nel browser web: http://localhost:3000/Dovresti visualizzare la scheda cliente come mostrato nell'immagine sottostante.

Scheda dati cliente fornita da CodeAccenditore

DOMANDE FREQUENTI

Significa che la logica aziendale risiede nel modello, mantieniping Il controller è snello e focalizzato sull'instradamento delle richieste. Ciò rende la logica riutilizzabile e il controller più facile da leggere e testare.

Una vista dovrebbe presentare solo dati. Keeping La logica che ne deriva separa le responsabilità, consentendo ai progettisti di modificare il layout senza toccare le regole aziendali e permettendo di visualizzare gli stessi dati in diverse viste.

Active Record è un generatore di query integrato che consente ai modelli di leggere e scrivere nel database tramite chiamate di metodo anziché SQL puro. Aiuta anche a prevenire le iniezioni SQL tramite esca.ping valori.

L'intelligenza artificiale può generare file di controller, modello e vista corrispondenti a partire dalla descrizione di una funzionalità, mantenendo la coerenza nella denominazione. RevPrima di eseguire le query, visualizzale e convalidale.

Il tag `echo` abbreviato è un modo compatto per stampare un valore in una vista. Il blocco di tag PHP completo viene utilizzato per istruzioni e strutture di controllo. Entrambi sono equivalenti per l'output, ma i tag abbreviati mantengono le viste più ordinate.

Riassumi questo post con: